Revision 3c90e4c5
Von Moritz Bunkus vor etwa 8 Jahren hinzugefügt
SL/Helper/Csv.pm | ||
---|---|---|
158 | 158 |
foreach my $p_num (0..$n_header - 1) { |
159 | 159 |
my $h = $self->_csv->getline($self->_io); |
160 | 160 |
|
161 |
my ($code, $string, $position, $record, $field) = $self->_csv->error_diag; |
|
162 |
|
|
161 | 163 |
$self->_push_error([ |
162 | 164 |
$self->_csv->error_input, |
163 |
$self->_csv->error_diag, |
|
164 |
0, |
|
165 |
$code, $string, $position, $record // 0, |
|
165 | 166 |
]) unless $h; |
166 | 167 |
|
167 | 168 |
if ($self->is_multiplexed) { |
... | ... | |
259 | 260 |
push @data, \%hr; |
260 | 261 |
} else { |
261 | 262 |
last if $self->_csv->eof; |
263 |
|
|
262 | 264 |
# Text::CSV_XS 0.89 added record number to error_diag |
263 |
if (qv(Text::CSV_XS->VERSION) >= qv('0.89')) { |
|
264 |
push @errors, [ |
|
265 |
$self->_csv->error_input, |
|
266 |
$self->_csv->error_diag, |
|
267 |
]; |
|
268 |
} else { |
|
269 |
push @errors, [ |
|
270 |
$self->_csv->error_input, |
|
271 |
$self->_csv->error_diag, |
|
272 |
$self->_io->input_line_number, |
|
273 |
]; |
|
274 |
} |
|
265 |
my ($code, $string, $position, $record, $field) = $self->_csv->error_diag; |
|
266 |
|
|
267 |
push @errors, [ |
|
268 |
$self->_csv->error_input, |
|
269 |
$code, $string, $position, |
|
270 |
$record // $self->_io->input_line_number, |
|
271 |
]; |
|
275 | 272 |
} |
276 | 273 |
last if $self->_csv->eof; |
277 | 274 |
} |
Auch abrufbar als: Unified diff
CSV-Helfer: Error-Felder versionsunabhängig setzen
Unterschiedliche Versionen von Text::CSV_XS geben beim Aufruf von
»error_diag« unterschiedliche Felder zurück: neuere geben mehr
zurück.
Es gibt aber einen Testcase, der das Fehler-Array auf exakte
Übereinstimmung prüft. Da sorgt also jegliches neu hinzugekommenes Feld
dafür, dass der Test fehlschlägt.
Also nur die Felder explizit an SL::Helper::Csv::Error übergeben, die
uns wirklich interessieren, und nicht das von »error_diag«
zurückgebebene Array 1:1 durchreichen.