use warnings; use strict; my @data = ( '01.02.1989 38413 lncghermg', '22.01.1989 49562956 lehhhhhhhwrg', '03.12.1988 2349 ngfwjkgufiw', '02.01.1989 2913 rhqiuq' ); my @sorted = map { $data[$_->[0]] } sort { $a->[1] cmp $b->[1] } map { [$_, join('', reverse split(/\./, substr($data[$_], 0, 10)))] } 0..$#data; print "$_\n" for @sorted;