no modules, and no split, why? anyhow:
use strict;
# use schwartzian transform if the size is big
my @dates1 = ( '05-11-2006', '01-01-2005' , '04-12-2005' , '22-03-2005
+');
@dates1 = sort{substr($a,6,4)<=>substr($b,6,4)||substr($a,3,2) <=>subs
+tr($b,3,2)||substr($a,0,2)<=>substr($b,0,2)}@dates1;
print join("\n",@dates1);
print "\n\n";
# this format is easy, it's just alpha-numeric
my @dates2 = ( '2005-12-01' , '2005-11-02' , '2005-12-07');
my @dates2 = sort @dates2;
print join("\n",@dates2);
__OUTPUT__
01-01-2005
22-03-2005
04-12-2005
05-11-2006
2005-11-02
2005-12-01
2005-12-07