Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Operator precedence

by BrowserUk (Pope)
on Jan 12, 2013 at 23:13 UTC ( #1013069=note: print w/ replies, xml ) Need Help??


in reply to Operator precedence

Apple is a term just as the parenthesized expression is, and therefore has equal precedence to it.

But the operator && evaluates its left term before its right.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.


Comment on Re: Operator precedence
Re^2: Operator precedence
by muba (Priest) on Jan 12, 2013 at 23:15 UTC

    So simple... and still I somehow overlooked it.

    Thanks a lot, BrowserUk!

      Not that it helps particularly with this particular expression, but the output from B::Deparse is often enlightening.

      I love the fact that perl turns that into a low precedence boolean operator used for flow control and a postfix if. P::C must get righteously apoplectic :)

      C:\test>perl -MO=Deparse,p use 5.010; sub apple { say "apple" } sub banana { say "banana" } sub cherry { say "cherry" } apple && (banana || cherry) ^Z sub BEGIN { require 5.01; } sub apple { no feature; use feature ':5.10'; say 'apple'; } sub banana { no feature; use feature ':5.10'; say 'banana'; } sub cherry { no feature; use feature ':5.10'; say 'cherry'; } no feature; use feature ':5.10'; banana or cherry if apple ; - syntax OK

      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
        ehm, there's a typo ...

        ...if you want to activate extra options like parens to emphasize the precedence you need to prepend a minus, i.e. -p

        $ perl -MO=Deparse,-p use 5.010; sub apple { say "apple" } sub banana { say "banana" } sub cherry { say "cherry" } apple && (banana || cherry) __END__ ... yadda ...yadda ... (apple() and (banana() || cherry()));

        UPDATE

        well it's still not too clear about left-to-right.

        I know there is somewhere an option to combine the optree with readable code, not sure if in B::Deparse or B::Concise or B::Terse

        UPDATE Terse and Concise have the option -src but it doesn't help that much, cause it's line based.

        Cheers Rolf

        I do feel I am a seasoned perl programmer myself, but in this example, that B::Deparse only confuses me. Who would ever write

        banana or cherry if apple ;

        to make things clear? I would NEVER use that construct. The give construct by the OP causes no mental parsing problems whatsoever.


        Enjoy, Have FUN! H.Merijn

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1013069]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (9)
As of 2014-07-31 11:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (248 votes), past polls