my @sorted_lines = map { $_->[1] } sort { $a->[0] <=> $b->[0] } map { [(substr $_,2,8) => $_] } ; __DATA__ 1&20070102&string3&string4.... 2&20070101&string3&string4.... 3&20061212&&string3&string4....