my $pattern_file = ; chomp $pattern_file; open my $patterns, "<", $pattern_file or die "Can't open '$pattern_file' for reading: $!"; my @patterns = <$patterns>; chomp @patterns; @patterns = grep length(), @patterns; @patterns = map qr/$_/, @patterns; ... foreach my $file ( ... ) { # All patterns must match foreach my $pattern ( @patterns ) { next if $file =~ $pattern; print OUT "'$file' !~ /$pattern/\n"; last; } }