my @folders = glob 'input_directory*'; # get/sort all qualifying folders my @requests; for (my ($found, %filedate); $found = pop @folders or exit();) { @requests = sort { { ( $filedate{ $a } ||= -M $a ) <=> ( $filedate{ $b } ||= -M $b ) } glob "$found/" . 'Flat_file.*.txt' and last; # reiterate iff none found }