in reply to if-else vs. tertiary effieciency?

Oh, one thing I meant to say earlier, but forgot about: the if statement and the ?: operator aren't really the seperate beasts they appear to be. See the documentation of B::Deparse, and the section on -q, specificly.

perl -MO=Deparse,-p,-x9 -e "if ($/) {print 1} else {print 2}" ($/ ? do { print(1) } : do { print(2) }); -e syntax OK perl -MO=Deparse,-p,-x9 -e "$/?print 1:print 2" ($/ ? print(1) : print(2)); -e syntax OK

All the speed diference you see is from those do{}s. Moral of the story? Perl is even stranger then it looks, it has a poor optimizer, do{} is expensive, and other. Pick any combination you feel like.


Warning: Unless otherwise stated, code is untested. Do not use without understanding. Code is posted in the hopes it is useful, but without warranty. All copyrights are relinquished into the public domain unless otherwise stated. I am not an angel. I am capable of error, and err on a fairly regular basis. If I made a mistake, please let me know (such as by replying to this node).