sub n { $_[0] =~ m#^(\d+)-(\d+)-(\d+)(.*)#; sprintf( "%02d%02d%02d%s",$3,$1,$2,$4 ); } my @line = sort {n($a) cmp n($b)} ; print @line; __DATA__ 1-22-03 somedata_somedata 1-23-03 wwwwwwwwwww 1-22-03 sssssssssssss 2-3-03 aaaaaaaaaaaa 1-3-03 sdddddd 2-3-03 ddddddddddddd 1-22-03 eeeeeeeeeee 2-3-03 hhhhhhhhh 1-3-03 kkkkkkkkkkkkkkk 2-3-03 llllllllllllllll