将NewLine用于编写CSV文档Perl

时间:2016-08-19 16:00:36

标签: arrays perl file csv file-read

我正在尝试将我的perl脚本计算的数据写入csv文件,该文件将被重复打开并输入。我遇到过两个问题。一,CSV创建了一行的ocupies,将每个新字段添加到新列。第二个是创建的CSV文件没有成功关闭,因此我无法通过再次运行脚本来重新打开和编辑它。 我正在使用的代码是:

push my @rows, ["Entries Missing from English doc:"," " , "Entries Missing  from French doc:"];
push @rows, ["$englishUnincluded[0]", " ", "$frenchUnincluded[0]"];
my $csv = Text::CSV->new ({binary=>1}) or die "cannot use CSV: ".Text::CSV->error_diag ();
open my $csvFile, ">:encoding(utf8)", "telt.csv" or die "telt.csv: $!";
$csv->column_names(@{$rows[0]});
$csv->print($csvFile, $_) for @rows;
close $csvFile or die "teet.csv: didnt close at all";

我也尝试过使用连续的打印语句,而不是$csv->print(..) for @rows;我以前的语句看起来像

$field_vals = ["$val", "something", " "]; $csv->print($csvFile, $field_vals);并将所有值重新加载到字段值中,并将它们作为行打印到CSV,但连续出现相同的两个问题。

**请注意,如果只打印一行,则CSV未关闭问题会消失。 此外,脚本不会在未正确关闭文件时打印“或死”消息。

提前感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:3)

您已经忘记宣布结束:

my $csv = Text::CSV->new ({binary=>1, eol => $/}) or die "cannot use CSV: ".Text::CSV->error_diag ();
#                           here __^^^^^^^^^^^^