my @stuff = ( {submitted => "01/22/08"}, {submitted => "01/12/08"}, {submitted => "04/01/09"}, {submitted => "10/04/08"}, {submitted => "01/10/09"}, {submitted => "12/12/09"}, {submitted => "01/22/09"}, {submitted => "01/12/09"}, {submitted => "12/30/08"}, {submitted => "12/22/08"}, {submitted => "12/15/08"}, {submitted => "01/05/09"}, {submitted => "01/19/09"}, {submitted => "01/21/09"} ); my @sorted = map { $_->[0] } sort { $b->[1] cmp $a->[1] } # map { print "$_->[1]\n"; $_ } # uncomment for debugging purposes map { [$_, join('', (split(/\//, $_->{submitted}))[2,0,1] )] } @stuff; foreach my $res (@sorted) { print $res->{submitted}."\n"; }