use Modern::Perl; no warnings qw /uninitialized /; my @result; while () { chomp; my ($index, $value) = split /\t/; $result[$index] = $value; } $result[50] = 0 unless $result[50]; while (my ($index, $value) = each @result) { next if $index == 0; say "$index\t", $value+0; } __DATA__ 33 5 34 7 36 7 37 8 38 0 #### 1 0 2 0 3 0 4 0 5 0 6 0 7 0 (...) 31 0 32 0 33 5 34 7 35 0 36 7 37 8 38 0 39 0 (...) 49 0 50 0