use 5.010; use strict; use Sort::Key qw(multikeysorter); my $sorter = multikeysorter( sub { /^(.{8})(.{6})/ }, # how to split into keys qw( -int int ), # how to sort each key ); my @dateArray = grep { 1+chomp } ; say for $sorter->(@dateArray); __DATA__ 20010405000000 20050405005000 20020405081200 20080405022500 20080405022600 20080405023500 20090405022500 20090405022300 20090405022900 20090405022100