my %MMM_order = ( Mar => 3, Apr => 4, May => 5, Dec => 12, ); sub cmp_MMMYY { my ($a_mon, $a_yr) = $a =~ /(.{3})(\d{2})/; my ($b_mon, $b_yr) = $b =~ /(.{3})(\d{2})/; $a_yr cmp $b_yr or $MMM_order{$a_mon} <=> $MMM_order{$b_mon}; }