#!/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}}可以使用”编码“和”二进制“吗?
答案 0 :(得分:2)
你想要encoding_in
(解析时需要;用于解码输入)而不是encoding
(用于编码传递给Perl的字符串,这是永远不需要的东西)。
my $csv = Text::CSV::Encoded->new({
encoding_in => "utf-8",
binary => 1,
});