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;