假設我要分析的文件裏面領域引號字符分析字符串
$ cat toParse.txt 1 2 3 4 5 1 "2 3" 4 5 1 2" 3 " 4 5
前兩行很容易解析:Text::CSV
可以處理它。舉例來說,我想:
use strict; use Text::CSV; while() { chomp $_; my $csv = Text::CSV->new({ sep_char => ' ', quote_char => '"' , binary => 1}); $csv->parse($_); my @fields = $csv->fields(); my $badArg = $csv->error_input(); print "fields[1] = $fields[1]\n"; print "Bad argument: $badArg\n\n"; }
但是,如果報價字符內標記化領域包含CSV變得非常混亂。
上述程序打印出:
fields[1] = 2 Bad argument: fields[1] = 2 3 Bad argument: fields[1] = Bad argument: 1 2" 3 " 4 5
有沒有人有什麼建議?我想最後的fields[1]
填充2" 3 "
...換句話說,我想分割行中不包含在引用字符串中的任何空格。
我想在空格字符'「」'上分隔每一行,每當引號字符串中不包含空格時。 – asf107
我認爲'allow_loose_quotes => 1'會做到這一點。 – ikegami
'allow_loose_quotes => 1'絕對有幫助,但是如果在鬆散引號內有一個'sep_char',解析器仍然會中斷。 – asf107