0

我需要在 perl 中拆分。请看下面的例子:

"john","David2,mick",25,"12-12-2009","male"

我必须在不在引号内的每个逗号 (,) 上拆分此记录。

预期输出为:

john 
david2mick 
25 
12-12-2009
male

你能帮我解决这个问题吗?

4

2 回答 2

6

您可以使用Perl 5 中的核心模块。假设这不是您在此处拥有的正确 csv 数据,Text::ParseWords它是 的轻量级选项。Text::CSV

use strict;
use warnings;
use Data::Dumper;
use Text::ParseWords;

my $str = qq("john","David2,mick",25,"12-12-2009","male");
my @list = quotewords(',', 0, $str);

print Dumper \@list;

输出:

$VAR1 = [
          'john',
          'David2,mick',
          '25',
          '12-12-2009',
          'male'
        ];
于 2013-09-15T18:08:47.950 回答
2

这是一个 CSV 文件。最好使用 Text::CSV 模块

use Text::CSV;
my $line = '"john","David2,mick",25,"12-12-2009","male"';
my $csv = Text::CSV->new();
$csv->parse($line);
my @columns = $csv->fields();
于 2013-09-15T18:04:17.257 回答