my @sorted= Filter { s#\d{2}(\d+)#\1#g } sort Filter { s#(\d+)# sprintf "%02d%s", length($1), $1 #g } @data; #### my @data = qw/a.1 a.5 a.11 b.3 b.15/; #### use Algorithm::Loops (MapCarE); my $dateTime= join "", MapCarE { sprintf "%02d%s", pop()+pop(), pop() } [ (localtime)[5,4,3,2,1,0] ], [ 1900, 1, (0)x4 ], [ "// ::" =~ /./g, "" ]; print $dateTime,$/; print scalar localtime(),$/; ## for a more familiar view __OUTPUT__ 1900103018003000100130037 Tue Sep 30 01:13:37 2003