http://qs1969.pair.com?node_id=1176868


in reply to split problem

I believe you have to initialize the array in order. Switching these two lines:

$flds[16] = undef; $flds[8] = 0;

...around like this:

$flds[8] = 0; $flds[16] = undef;

...will work, but then you won't be able to populate the other ones. Perhaps a full blown initialization of any array elements that aren't populated by split first?:

use warnings; use strict; use Data::Dumper; my $value = "A\tB\tC\tD\tE\tF\t\t\t\t"; my @flds = split(/\t/,$value); for (0..16){ $flds[$_] = undef if ! defined $flds[$_]; } $flds[8] = 0; print Dumper \@flds;

Output:

$VAR1 = [ 'A', 'B', 'C', 'D', 'E', 'F', undef, undef, 0, undef, undef, undef, undef, undef, undef, undef, undef ];