#!/usr/bin/perl use strict; use warnings; my $directory = q{C:/Users/john/Documents/sample_folder}; opendir my $dh, $directory or die qq{cant open *$directory*}; my @dir_list = grep {/^EN-US_.+/ && -d qq{$directory/$_} } readdir $dh; # does this print what you expect? print qq{dir_list: $directory\n}; print qq{$_\n} for @dir_list; print qq{*****\n}; for my $dir (@dir_list){ my $doc = sprintf(q{%s/%s/sample_doc.doc}, $directory, $dir); # are these the right files? print qq{$doc\n}; if (-f $doc){ print qq{found\n}; } else{ print qq{not found\n}; } }