opendir my $dh, $source_directory or die "error: open '$source_directory'"; my @paths = grep { /^K/} readdir $dh; closedir $dh; $p=0; foreach (@paths){ opendir SUB_DIR,"$source_directory$paths[$p]"; while(our $file = readdir(SUB_DIR)) { if(($file =~ /$ID/) && ($file =~ /xls$/)){ @files = $file; @FilePath = "$source_directory$paths[$p]"; } } $p++; } print "\nFile = $FilePath[0]\\$files[0]\n";