$ls *.xml 123_20070303_REFNUM.xml 123_20071225_REFNUM.xml 123_20080101_REFNUM.xml 923_20070227_REFNUM.xml #### #!/usr/bin/perl use strict; use warnings; use Date::Simple (':all'); use Data::Dumper; my $dir = q{/home/LarryTheLobster/}; opendir(DIR, $dir) or die $!; my @xml_files = sort { d8( (split /_/, $a)[1] ) cmp d8( (split /_/, $b)[1] ) } grep { -f and /[.]xml\z/ } readdir DIR; closedir DIR; print Dumper \@xml_files; #### Output: $VAR1 = [ '923_20070227_REFNUM.xml', '123_20070303_REFNUM.xml', '123_20071225_REFNUM.xml', '123_20080101_REFNUM.xml' ];