/me kicks himself.
You're right, though for a different reason. It seems to me that, in this particular case, YY ($1) cannot be false, as it contains at least one character, then one of !?., then a whitespace character. Which cannot be false. Or, if the match fails, it contains nothing and therefore is false as it is supposed to be. Usually.
However, it might contain the $1 from a previous match, which makes you right. Again.
| [reply] |
You're right that it probably would not have made any difference in this particular case.
But that's the problem. I keep seeing that meme pop up, being used by people who
don't understand that it is not "if-then-else" but something that acts
a bit like it most of the time.
So, I can't let one like that go by without comment. Since ?: is actually
shorter to type, I'd greatly prefer that this other ugly thing be eliminated and
the proper operator introduced at every opportunity.
-- Randal L. Schwartz, Perl hacker
| [reply] |
I was looking at this last night and came to pretty much the same conclusion... the potential for a nasty bug is there
(hence the 'XX && YY || ZZ' construct should be avoided), but in this specific case I don't see it happening.
However, it might contain the $1 from a previous match...
In that case, the regex failed to match, so you never evaluate the $1 anyway. (i.e. XX is false, so
even if YY contains something unexpected, we never actually get tripped up by it)
-Blake
| [reply] |