我有一个非常奇怪的事情(至少对我而言!)我在perl中解析的csv文件在几周内工作得很好,但现在突然间它无法正确解析。
相关信息:
new
属性,但仍然没有运气,真的我的perl代码如下。我认为这是可靠的,但也许有一个我缺少的设置,因为文件被读作一个长字符串,就像我使用print $.
和print $_
时我只获得1个结果,即整个文件在一行。当然,该行不会解析(并且错误消息是神秘的)。
更新:
我发现问题在于SFDC生成文件的方式。该文件的CR
为End of Line
。我下载了今天的文件,其中CR
和LF
为End of Line
。它完美地处理。然后我去去敏感昨天的文件发布,当我编辑它时,我得到回车和换行作为EOL元素。去图!
由于某种原因,TEXT::CSV
不喜欢仅使用回车作为EOL来解析文件。虽然未在下面的代码中反映,但我已尝试EOL
方法中TEXT::CSV->new()
属性的所有可能设置。
我将问题保持打开状态,因为知道如何解析仅使用回车符作为EOL提要的文件可能会有用。
use strict;
use warnings;
use diagnostics;
use Text::CSV;
my $datadump = "//myServer/WeeklyReport/data_dump.csv";
my $csv = Text::CSV->new({sep_char => ',', binary => 1});
open (CSV, "<", $datadump) or die $!;
while (<CSV>) {
chomp $_;
next if ($. == 1); # skip first line (contains headers)
if ($csv->parse($_)) { # parse the line ...
my @fields = $csv->fields();
my $opp_owner = $fields[8];
chomp $opp_owner;
$owner_hash{$opp_owner} = "ignore"; # load into hash to delete duplicates
} else { # if the line won't parse, return error
my $err = $csv->error_input;
print "Failed to parse line: $err";
}
}
close CSV;
答案 0 :(得分:1)
您修改后的问题的答案是,没有更改换行符的选项。您可以在http://metacpan.org/pod/Text::CSV查看所有Text :: CSV选项。那里的逐字选项似乎相关,所以我有一个谷歌给你,但无法找到任何东西。 (其中包括&#34; intitle:text intitle:csv intitle:verbatim&#34;没有产生任何结果。)