我正在尝试将我的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未关闭问题会消失。 此外,脚本不会在未正确关闭文件时打印“或死”消息。
提前感谢您提供的任何帮助!
答案 0 :(得分:3)
您已经忘记宣布结束:
my $csv = Text::CSV->new ({binary=>1, eol => $/}) or die "cannot use CSV: ".Text::CSV->error_diag ();
# here __^^^^^^^^^^^^