假设我要解析文件
$ cat toParse.txt 1 2 3 4 5 1 "2 3" 4 5 1 2" 3" 4 5
前两行很容易解析: Text::CSV
可以处理。例如,我试过:
使用严格; 使用文本::CSV; 尽管() { 咀嚼$_; 我的 $csv = Text::CSV->new({ sep_char => ' ', quote_char => '"' , binary => 1}); $csv->解析($_); 我的@fields = $csv->fields(); 我的 $badArg = $csv->error_input(); 打印“字段[1] = $fields[1]\n”; print "错误参数:$badArg\n\n"; }
但是,如果引号字符包含在标记化字段中,CSV 会变得非常混乱。
上面的程序打印出来:
字段[1] = 2 不好的论点: 字段[1] = 2 3 不好的论点: 字段[1] = 错误参数:1 2" 3" 4 5
有没有人有什么建议?我希望最后fields[1]
填充2" 3 "
... 换句话说,我想在引号字符串中不包含的任何空格上拆分行。