如何使用Text :: CSV_XS模块从CSV字符串读取其输入。然后我只能找到记录的信息是从文件中读取。Perl Text :: CSV_XS从字符串中读取
要做到这一点的最快方法是使用perl split函数分割CSV字符串,并从那里读取每一行,或者是否有一些内置方法使用Text :: CSV_XS直接从CSV字符串中读取?
谢谢
如何使用Text :: CSV_XS模块从CSV字符串读取其输入。然后我只能找到记录的信息是从文件中读取。Perl Text :: CSV_XS从字符串中读取
要做到这一点的最快方法是使用perl split函数分割CSV字符串,并从那里读取每一行,或者是否有一些内置方法使用Text :: CSV_XS直接从CSV字符串中读取?
谢谢
使用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
}
的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
的'parse'方法看起来像你需要:https://metacpan.org/module/Text::CSV#parse – simbabque
你想用一个长的CSV字符串做什么?这对任何想要回答的人都应该有所帮助。 – slayedbylucifer
可以研究'Text :: CSV_XS'的用法[here](http://search.cpan.org/~hmbrand/Text-CSV_XS-0.95/CSV_XS.pm) –