Using Perl operators in void context is like calling up the reference desk of your local library and asking, "What's the average bodily temperature of a healthy aardvark on the moon of Pluto during the rainy season?" The poor librarian will have to find a large enough population of aardvarks to have a control set and a test set, not to mention mounting an expedition to Pluto with space thermometers and the like. We won't even get into the fact that wet aardvarks in space are surly! When the researcher finally returns to the phone to say, "Slightly lower than on earth," you'll say. "Thanks, but I just wanted to know if this was the right phone number."
In other words, don't do a bunch of work just to throw it away.
| [reply] |
This is probably partly Perls fault since it lets you, and encourages you to, write stuff like do something || die "Message";. That could be called using the or operator in void context. Even more so when it isn't a die, but a warn or print afterwards.
I know that when I first started with Perl, coming from other languages, I used a lot of stuff in void context that I wasn't supposed to, both map and ?: because it let me, and the documentation didn't point out that it was a bad thing. That I learnt from other coders, at this place.
Not that I am defending it, I've leant my lesson. But I do think that the nature of the language seems to encourage such things. :)
You have moved into a dark place.
It is pitch black. You are likely to be eaten by a grue.
| [reply] [d/l] [select] |
From perldoc -q map
Found in /System/Library/Perl/pods/perlfaq6.pod
What's wrong with using grep or map in a void context?
Both grep and map build a return list, regardless of their
context. This means you're making Perl go to the trouble
of building up a return list that you then just ignore.
That's no way to treat a programming language, you
insensitive scoundrel!
That's in 5.6.0, but apparently it's changed in 5.8.0, go figure. | [reply] [d/l] |
:-) Sorry.
But actually the root of evil was that I didn't really understand how ? : worked. I thought of it as a nice shortcut but didn't see how it really worked. Which is why I was puzzled yesterday.
| [reply] [d/l] |