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 ];
In Section
Seekers of Perl Wisdom