Мне нужно прочитать CSV-файл, abc.csv
, выбрать несколько полей из них и сформировать новый CSV-файл, def.csv
.Игнорировать пустые строки в CSV-файле с использованием Perl
Ниже приведен мой код. Я пытаюсь игнорировать пустые строки от 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 файл?
Я использовал Stack Overflow вопрос Remove empty lines and space with Perl, но это не помогло.
У вас, кажется, отсутствует запятая между «flops» и «ub» – Gabs00
Переместите «next if ...» в одну строку, потому что вы получаете доступ к элементам Canñons, если линия. – smartmeta
Добавляя к @ Gabs00, у вас больше ошибок синтаксиса: 'my $ aCsv =" abc.csv "' отсутствует ';'. Ошибка копирования-вставки? – chrsblck