use warnings; use strict; my $dir = 'C:/MyFolder'; opendir(my $dh, $dir); my @files = map { $_->[2] } sort { $b->[0] <=> $a->[0] or $a->[1] cmp $b->[1] } map { [-d "$dir/$_" || 0, lc $_, $_] } readdir $dh; print "$_\n" for @files;