use warnings; use strict; use Data::Dumper; use File::Slurp qw(read_dir); my @files; my @directories = ( '/dir1', '/dir1/imgs' ); for my $d (@directories) { push @files, grep { -f "$d/$_" } read_dir($d); } print Dumper(\@files);