2013-01-09 7 views
5

Text::CSVモジュールを使用して、タブ区切り値ファイルからさまざまなフィールドに行を解析しています。Perlを使用して特殊文字でフィールドを解析するText :: CSV

my $file = $ARGV[0] or die "Need to get TSV file on the command line\n"; 

my $csv = Text::CSV->new({sep_char => "\t"}); 

open(my $data,'<', $file) or die "Could not open '$file' $!\n"; 


while (my $line= <$data>) { 

     if($csv->parse($line)){ 
      my @curr_arr = $csv->fields(); 

     } 
} # end of while 

close $data; 

上記は私のコードの重要な部分の一部です:文字列内の特殊文字の

例としては

"CEZARY Å?UKASZEWICZ, PAWEÅ? WIETESKA","BÜRO FÜR" 

私のコードは以下のようになっています。次のように私が手にエラーがある:

cvs_xs error : 2026 - EIQ - Binary Character inside quoted field, binary off @pos 15 
+6

重要な注意:デフォルトの動作では、ASCII文字のみを受け入れることです。つまり、フィールドに改行を含めることはできません。あなたのデータにフィールドに埋め込まれた改行、または0x7e(チルダ)以上の文字、またはバイナリデータが含まれている場合、new()の呼び出しでバイナリ=> 1に設定する必要があります。幅広い解析オプションをカバーするには、常にバイナリを設定する必要があります。 – alex

答えて

11
my $csv = Text::CSV->new({ binary => 1, sep_char => "\t"}); 
+0

この回答をいただきありがとうございます! –

関連する問題