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); foreach my $file(@files) { my $filesize = -s $d.$file; #need to check if file is > then 0 and less then 2M; } }