http://qs1969.pair.com?node_id=1087276


in reply to sorting keys in hash

Yet another way, though I totally agree that a much better solution would be to use an inherently sortable format for the hash keys from the start.

use strict; use warnings; use feature 'say'; my %data = ( Apr14 => 2, Mar14 => 2, May14 => 2, Dec13 => 2, ); my %month_to_num = ( Jan => '01', May => '05', Sep => '09', Feb => '02', Jun => '06', Oct => '10', Mar => '03', Jul => '07', Nov => '11', Apr => '04', Aug => '08', Dec => '12', ); my %num_to_month = reverse %month_to_num; say "key - $_ and value - $data{$_}" for map { s/ (\d{2}) (\d{2}) /$num_to_month{$2}$1/rx } sort map { s/ (\w{3}) (\d{2}) /$2$month_to_num{$1}/rx } keys %data;