“编码”和“二进制”都可以用于`Text :: CSV :: Encoded`吗?

时间:2015-12-28 02:45:44

标签: perl csv

#!/usr/bin/env perl

use strict;
use warnings;
use Text::CSV::Encoded;

my $csv = Text::CSV::Encoded->new({
    encoding => "utf8",
    binary => 1,
  });

while (my $row = $csv->getline (*STDIN)) {
  my @fields = @$row;
  print join('|', @fields), "\n";
}

我使用上面的Perl代码来解析以下CSV文件。

a,"1
2
3"

我收到以下错误。

$ ./main.pl < main.csv 
Use of uninitialized value $encoding in pattern match (m//) at /Users/xxx/Library/ActivePerl-5.16/lib/Text/CSV/Encoded/Coder/Encode.pm line 44, <STDIN> line 3.
a|1
2
3

“{1}}可以使用”编码“和”二进制“吗?

1 个答案:

答案 0 :(得分:2)

你想要encoding_in(解析时需要;用于解码输入)而不是encoding(用于编码传递给Perl的字符串,这是永远不需要的东西)。

my $csv = Text::CSV::Encoded->new({
   encoding_in => "utf-8",
   binary => 1,
});