Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
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
Replies are listed 'Best First'.
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 cooling their heels in the Monastery: (17)
As of 2015-07-31 15:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (278 votes), past polls