in reply to Unable to detect error from Text::CSV
I will address the separate issues in separate posts.
As poj already saw, your CSV data is not consistent:
$ csv-check pl-1192449.csv Checked pm-1192449.csv with csv-check 1.8 using Text::CSV_XS 1.30 with perl 5.26.0 and Unicode 9.0.0 OK: rows: 4, columns: (32, 33) sep = <,>, quo = <">, bin = <0>, eol = <"\n"> WARN: multiple column lengths: 3 lines with 32 fields 1 line with 33 fields
csv-check is (also) available on github.
As of Text::CSV_XS version 1.29 and Text::CSV version 1.95, the new strict attribute would have caught that:
my $csv = Text::CSV->new ({ binary => 1, auto_diag => 1, strict => 1 } +); my $fn = "pm-1192449.csv"; -d "sandbox" and substr $fn, 0, 0, "sandbox/"; say $fn; open my $fh, "<:encoding(utf-8)", $fn or die "$fn: $!\n"; while (my $row = $csv->getline ($fh)) { # }
->
$ perl pm-1192449.pl pm-1192449.csv # CSV_XS ERROR: 2014 - ENF - Inconsistent number of fields @ rec 3 pos + 427 field 33
|
|---|