$ perl -Mstrict -Mwarnings -Mautodie -le ' use Tie::File; tie my @input_records, "Tie::File", "./pm_1054101_input.txt"; my @sorted_record_numbers = map { $_->[0] } sort { $a->[1] <=> $b->[1] || $a->[2] <=> $b->[2] } map { [ $_, map { substr $_, 3 } (split " ", $input_records[$_])[0,1] ] } 0 .. $#input_records; open my $out_fh, ">", "./pm_1054101_output.txt"; for (@sorted_record_numbers) { print $out_fh $input_records[$_]; } close $out_fh; untie @input_records; '