my $filter = @$custs ? join('|', map quotemeta($_),@$custs) : ""; $filter=qr/^(?!_)(?:$filter)/i; ( my $year_mon = $mon_year ) =~ s/(\d+)_(\d+)/20${2}_${1}/; my @dirs = map { if (-d $_) { warn "Considering: $_\n"; s/.*?([^\\\/]+)$/$1/; if (/$filter/) { warn "Processing: $_\n"; $_ } else { warn "Skipping: $_\n"; () } } else { (); } } glob File::Spec->catfile( $root, '*' );