my %m=(Jan=>1, Feb=>2, Mar=>3, Apr=>4, May=>5, Jun=>6, Jul=>7, Aug=>8, Sep=>9, Oct=>10, Nov=>11, Dec=>12); sub datesort { return $a->[3] <=> $b->[3] || $m{$a->[2]} <=> $m{$b->[2]} || $a->[1] <=> $b->[1]; } my @list=map{$_=$_->[0]}sort{datesort()}map{$_=[$_,(split(/\//,$_))]}keys(%days);