Text::CSV_XSを利用したCSVの利用と作成

Text::CSV_XSを利用してCSVの利用と作成を行う。CSVをハッシュとして取得したい場合はText::CSV::Simpleを使う。

use strict;
use warnings;
use utf8;
use Encode;
use FileHandle;
use Text::CSV_XS;

my $filename = "hogehoge.csv";
my $fh = new FileHandle;
$fh->open($filename) || die "error, Cannot open $filename\n";
my $shiftjis = find_encoding('shift_jis');
my $csv = Text::CSV_XS->new({binary=>1}); #日本語を読み込むときはbinaryを1にする

# 一行ごとに読み込む
while(<$fh>){
  my $line = $shiftjis->decode($_);

 # CSV形式の一行をパース。parseが失敗したら偽になるらしい
  $csv->parse($line) or next;

 # parseとセット。parseが成功したCSV形式の行を配列として取得
  my @fields = $csv->fields();

  # 配列をCSV形式の文字列に変換、変換に失敗したら偽になるらしい
  $csv->combine(@fields);
  
 # combineとセット。combineが成功したCSV形式の文字列を取得
 my $newLine = $csv->string();

  print encode('euc-jp',$newLine);
}
$fh->close;