Witam,
Mam problem nad którym głowie się od dłuższego czasu. Mianowicie:
mam tekst:
$text = 'SAR001,"","Cimetrix, Inc","Bob Smith","CAM",N,8,1,0,7,"Error, Core Dumped" '
chce go rozdzielic po separatorze , z wyłączeniem tekstu pomiedzy "".
Posłużylem się takim sposobem:
Kod:
@new = ();
push(@new, $+) while $text =~ m{
"([^\"\\]*(?:\\.[^\"\\]*)*)",? # groups the phrase inside the quotes
| ([^,]+),?
| ,
}gx;
push(@new, undef) if substr($text,-1,1) eq ',';
Wszystko jest ok z tym ze tekst chce otrzymac w postaci:
Kod:
"SAR001";"";"Cimetrix, Inc";"Bob Smith";"CAM";"N";"8";"1";"0";"7";"Error, Core Dumped";
probowalem zastosowac:
Kod:
foreach my $val (@new) {
print "\"$val\";";
}
Jednak ostatnia wartość w linice zapisywana jest ze nakiem końca lini w wyniku czego otrzymuje:
Kod:
"SAR001";"";"Cimetrix, Inc";"Bob Smith";"CAM";"N";"8";"1";"0";"7";"Error, Core Dumped
";
Całkowite usunięcie znaku końca lini nie rozwiązuje problemu ponieważ $text w niektórych przypadkach jest wielo liniowy.
Troche zagmatwane ale mam nadzieje ze ktos pomoze.