use Modern::Perl; use autodie; my $infile = '/Users/ts/desktop/work/numbers.txt'; # Hmm... my $outfile = 'Users/ts/full_number.txt'; # leading '/' or not? open my $in, '<', $infile; my @result; while ( <$in> ) { my ( $index, $value ) = split; $result[$index] = $value; } close $in; open my $out, '>', $outfile; say $out "$_\t", $result[$_] || 0 for 1 .. 3_000_050; close $out;