That isn't right. It isn't that $file =~ $string is always true, it is that in for ( ... ), you never get to the inner guts of the for() if there is nothing in @strings. It is also true that ... =~ // is also true. Maybe you had a blank line in your input.
I've included a slightly different and to my mind nicer version of your code. You may find it helpful.
my $pattern_file = <STDIN>; chomp $pattern_file; open my $patterns, "<", $pattern_file or die "Can't open '$pattern_fil +e' 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; } }
In reply to Re: Help with null string behavior in regex?
by diotalevi
in thread Help with null string behavior in regex?
by McMahon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |