my %month_key_lookup = ( 'Jan' => 'a', 'Feb' => 'b', ... 'Dec' => 'l', ); my @sorted_dates = map substr($_, 12), sort map { /^(.{3}) (\d?)(. .*)/s; $month_key_lookup{$1}.($2||'0').$3.$_ } @dates;