我必須讀取CSV文件abc.csv
,從中選擇幾個字段並形成一個新的CSV文件def.csv
。忽略使用Perl的CSV文件中的空行
以下是我的代碼。我試圖忽略來自abc.csv
的空行。
genNewCsv();
sub genNewCsv {
my $csv = Text::CSV->new();
my $aCsv = "abc.csv"
my $mCsv = "def.csv";
my $fh = FileHandle->new($aCsv, "r");
my $nf = FileHandle->new($mCsv, "w");
$csv->print($nf, [ "id", "flops""ub" ]);
while (my $row = $csv->getline($fh)) {
my $id = $row->[0];
my $flops = $row->[2];
next if ($id =~ /^\s+$/); #Ignore empty lines
my $ub = "TRUE";
$csv->print($nf, [ $id, $flops, $ub ]);
}
$nf->close();
$fh->close();
}
,但我得到了以下錯誤:
Use of uninitialized value $flops in pattern match (m//)
我怎麼忽略空行的CSV文件?
我已經使用堆棧溢出問題Remove empty lines and space with Perl,但它沒有幫助。
fyi,你似乎在「flops」和「ub」之間缺少一個逗號 – Gabs00
將'next if ...'移動一行,因爲如果行是Cañons訪問元素。 – smartmeta
添加到@ Gabs00中,您有更多'syntax'錯誤:'my $ aCsv =「abc.csv」'缺少';'。複製粘貼錯誤? – chrsblck