如何使用Text::CSV_XS模块从CSV字符串中读取其输入。然后,我能找到的唯一记录的信息就是从文件中读取。
最快的方法是使用perlsplit函数拆分CSV字符串并从中读取每一行,还是有一些内置的方法可以使用Text::CSV_XS直接从CSV字符串中读取?
感谢
Text::CSV_XS
的getline
方法将从文件句柄中读取,因此您可以将标量字符串作为流打开并传递该文件句柄。
该程序演示
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";
}
输出
a-b-c-d
e-f-g-h
i-j-k-l
m-n-o-p
使用解析方法;
#!/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
}