Perl Text :: CSV_XS从字符串中读取

时间:2013-02-08 10:21:51

标签: string perl file text csv

如何使用Text :: CSV_XS模块从CSV字符串中读取其输入。然后,我只能找到记录的信息是从文件中读取。

最快的方法是使用perl split函数拆分CSV字符串并从那里读取每一行,还是有一些内置方法使用Text :: CSV_XS直接从CSV字符串中读取?

由于

2 个答案:

答案 0 :(得分:4)

getline的{​​{1}}方法将从文件句柄中读取,因此您可以将标量字符串作为流打开并传递该文件句柄。

该程序演示

Text::CSV_XS

<强>输出

use strict;
use warnings;

use Text::CSV_XS;

my $string = <<'END';
a,b,c,d
e,f,g,h
i,j,k,l
m,n,o,p
END


my $csv = Text::CSV_XS->new;
open my $fh, '<', \$string;

while (my $row = $csv->getline($fh)) {
  print join('-', @$row), "\n";
}

答案 1 :(得分:1)

使用parse方法;

#!/usr/bin/env perl
#
use strict;
use warnings;
use Data::Dumper;

use Text::CSV_XS;

my $csv = Text::CSV_XS->new();
if ( $csv->parse('Column1,Column2,Column2') ) {
    my @columns = $csv->fields;
    print Dumper( \@columns );
}
else {
    # Failed to parse the CSV data
}