use strict; my @dates = qw{ 10/02/2004 02/01/2004 01/02/2004 08/18/2010 01/06/2004 01/02/2005 01/12/2004 }; my @sorted= map { substr $_, 8 } sort map { join q{}, ( split m{/} )[ 2, 0, 1 ], $_ }@dates;