CSV 파일 abc.csv
을 읽어야하며, 몇 개의 필드를 선택하고 새 CSV 파일 def.csv
을 작성해야합니다.Perl을 사용하여 CSV 파일의 빈 줄을 무시하십시오.
아래 코드는 제 코드입니다. abc.csv
에서 빈 줄을 무시하려고합니다.
Use of uninitialized value $flops in pattern match (m//)
가 어떻게이 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();
}
는하지만 다음과 같은 오류가?
스택 오버플로 질문 Remove empty lines and space with Perl을 사용했지만 도움이되지 않았습니다. 당신은 당신이 오류가 발생했습니다 이유입니다, 플롭을 $ ID가 비어있는 경우 테스트가 아니라 $
unless(defined($id) && defined($flop) && defined($ub)){
next;
}
: 모든 필드가 비어있는 경우
fyi, "flops"와 "ub"사이에 쉼표가 누락 된 것 같습니다 – Gabs00
줄이있는 경우 Cañons가 요소에 액세스하기 때문에 'next if ...'한 줄 위로 이동하십시오. – smartmeta
@ Gabs00에 더 많은'syntax' 오류가 있습니다 :'my $ aCsv = "abc.csv"'는';'이 없습니다. 복사 - 붙여 넣기 실수? – chrsblck