my @sorted_keys = map substr($_, 10), sort map sprintf('%02d%02d%5$s%02d%02d', m{(\d+)/(\d+) \@ (\d+):(\d+) (AM|PM)}) . $_ keys(%line_data); #### my @sorted_keys = map substr($_, 10), sort map { my ($m,$d,$H,$M,$ampm) = m{(\d+)/(\d+) \@ (\d+):(\d+) (AM|PM)}; $H %= 12; sprintf('%02d%02d%s%02d%02d%s', $m,$d,$ampm,$H,$M, $_) } keys(%line_data);