如何使用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) –