Agreed, but he could copy $_ and define fall-backs for edge cases like "". (I'm not sure if he should)
grep { my $pat = ( $_ eq ="" ? EMPTY_PAT : $_ ); $string =~ m/$pat/g } @patterns;
If this gets more complicated he should consider using a function instead of an anonymous block.
2. > I suspect that where he showed us a literal empty string, ...
I suppose he is checking multiple log-files simultaneously for the same matching patterns. By grepping patterns, he is calculating the intersection of all patterns which apply to all files.
> those situations probably warrant a comment in real-world code
That's why I would prefer a special var $PATTERN for this behavior.
Cheers Rolf
UPDATE: what bothers me is not this special behavior of a literally empty match m// but that of "If the PATTERN evaluates to the empty string". IMHO that $pat="";m/$pat/ behavior is difficult to justify.
In reply to Re^3: grep trouble
by LanX
in thread grep trouble
by LogMiner
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |