当该行包含额外的未转义双引号时,如何使用Text :: ParseWords :: parse_line?

时间:2016-01-12 16:23:32

标签: perl parsing

我正在使用Text::ParseWords中的parse_line来解析一行文字。但是,当一对双引号内有未转义的双引号(")时,parse_line会失败。

例如:

use Text::ParseWords; 
...
my $line = q(1000,"test","Hello"StackOverFlow");
...
@arr = &parse_line(",",1,$line);

我不想逃避内部双引号(例如"Hello \"StackOverFlow")。

还有其他方法可以解析这条线吗?

1 个答案:

答案 0 :(得分:0)

使用@TLP和@ThisSuitIsBlackNot notes:

use 5.022;
use Text::CSV;
use Data::Dumper;
my $line = q(1000,"test","Hello"StackOverFlow");

my $csv = Text::CSV->new( {allow_loose_quotes => 1, escape_char => '%'});
$csv->parse($line);
my @fields = $csv->fields();
print Dumper \@fields;


__DATA__
$VAR1 = [
          '1000',
          'test',
          'Hello"StackOverFlow'
        ];