Text::CSV_XS モジュールを使用して CSV 文字列から入力を読み取る方法。次に、文書化されているのを見つけることができる情報のみがファイルからの読み取りです。
perl split 関数を使用して CSV 文字列を分割し、そこから各行を読み取るのが最速の方法ですか、それとも Text::CSV_XS を使用して CSV 文字列から直接読み取るメソッドが組み込まれていますか?
ありがとう
のgetline
メソッドは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";
}
出力
a-b-c-d
e-f-g-h
i-j-k-l
m-n-o-p
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
}