2

Text::CSV_XS モジュールを使用して CSV 文字列から入力を読み取る方法。次に、文書化されているのを見つけることができる情報のみがファイルからの読み取りです。

perl split 関数を使用して CSV 文字列を分割し、そこから各行を読み取るのが最速の方法ですか、それとも Text::CSV_XS を使用して CSV 文字列から直接読み取るメソッドが組み込まれていますか?

ありがとう

4

2 に答える 2

4

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
于 2013-02-08T11:51:34.530 に答える
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
}
于 2013-02-08T11:08:31.020 に答える