CSV入出力

CSV読取り

 use utf8;
 binmode STDOUT, 'encoding(utf8)';
 use Text::CSV_XS;
 
 my $file = $ARGV[0];
 my $csv = Text::CSV_XS->new( { binary => 1, eol => "\r\n" } );
 open my $io, "<:encoding(sjis)", $file or die $!;
 while ( my $row = $csv->getline($io) ) {
    my ( $id, $name ) = @$row;
    print "$id $name\n";
 }
 close $io;
 $csv->eof or die $csv->error_diag();
  • CSVファイルは文字コードSJIS、改行コードCRLFとし、画面端末はUTF8とする。

CSV書き出し

 my @rows = (
    [ '"1"', "a,b", "c\nd" ],
    [ '"2"', "a,b", "c\nd" ],
    [ '"3"', "a,b", "c\nd" ],
 );
 my $csv = Text::CSV->new( { binary => 1 } );
 open( my $fh, '>:encoding(utf8)', "test.csv" ) or die $!;
 foreach my $r (@rows) {
    $csv->combine(@$r);
    say $fh $csv->string();
 }

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2011-01-03 (月) 17:32:22