2007年4月6日

Text::CSV は日本語入ってるとダメなんだ、、、orz

Text::CSV で parse したらエラー出まくりだったので、エラーになってる CSVのファイルをのぞくと日本語の行がエラーになっていた、、、orz どうやら、日本語入っているとダメみたい、、っで、検索してみたら「勝手に添削 - PerlによるCSVファイルの高速集計 2 - 404 Blog Not Found」で、Text::CSV_XS で、{binary=>1} のオプションを付けると、どうやら日本語混じりでも OK らしいので、さっそくインストールしてコードを修正。モジュール名の変更だけで済んだ。
use strict;
use warnings;
use Text::CSV_XS;

$| = 1;

my $file = './hoge.csv';

my $csv = Text::CSV_XS->new({binary=>1});

open my $fh, '<', $file or die $!;
while (<$fh>) {
chomp;
$csv->parse($_) or next;

my @fields = $csv->fields;

# ... your code here ...
}
close $fh;
ちなみに環境
C:\>perl -v

This is perl, v5.8.8 built for MSWin32-x86-multi-thread
(with 50 registered patches, see perl -V for more detail)

Copyright 1987-2006, Larry Wall

Binary build 820 [274739] provided by ActiveState http://www.ActiveState.com
Built Jan 23 2007 15:57:46

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

0 件のコメント: