[tpm] Stupid question time!

Mike Stok mike at stok.ca
Fri Jan 29 13:03:09 PST 2010


On Jan 29, 2010, at 3:55 PM, Madison Kelly wrote:

> What is the difference between:
> 
> if (not $foo && $bar ne "") {}
> if ((not $foo) && ($bar ne "")) {}
> 
> I assumed it was mainly an aesthetic/readability thing, but I realize that no, it's logically different. Thanks for enlightening me?

It's a precedence thing, here's how to get perl to show you what it's doing:

ratdog:~ mike$ perl -MO=Deparse,-p -e 'if (not $foo && $bar ne "") {}'
if ((not ($foo && ($bar ne '')))) {
    ();
}
-e syntax OK
ratdog:~ mike$ perl -MO=Deparse,-p -e 'if ((not $foo) && ($bar ne "")) {}'
if (((not $foo) and ($bar ne ''))) {
    ();
}
-e syntax OK

The  "symbol" logical operators have a higher precedence than the "word" operators, so mixing them can be an exercise in memory and/or parenthesization.  See perldoc perlop.

Hope this helps,

Mike

-- 

Mike Stok <mike at stok.ca>
http://www.stok.ca/~mike/

The "`Stok' disclaimers" apply.






More information about the toronto-pm mailing list