Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^3: Operator precedence

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


in reply to Re^2: Operator precedence
in thread Operator precedence

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.


Comment on Re^3: Operator precedence
Download Code
Re^4: Operator precedence
by LanX (Canon) on Jan 13, 2013 at 01:10 UTC
    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

Re^4: Operator precedence
by Tux (Monsignor) on Jan 20, 2013 at 13:51 UTC

    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
      to make things clear? I would NEVER use that construct.

      I wasn't advocating it, I was just amused by it :)

      That said, I think the terms confuse things because they mean nothing, How about:

      open( FH, '<', $ARGV[ 2 ] ) or die( "$! : $ARGV[ 2 ]" ) if $ARGV[ 2 ];

      Or:

      eval $code or die $@ if $code;

      Doesn't seem so uncommon once you substitute realistic terms.


      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.

        All evenly confusing, as my mind hates statement modifiers. I try to prevent using them as long as possible. To me statement if expression; reads as utter crap. I prefer reading expression and statement;. YMMV. I completely realize not all our minds work the same, so any other reader might be confused the other way round. Mixing these will hurt both.

        The only statement modifier I am comfortable with is for in simple expressions like s{\s+$}{} for @foo;.


        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://1013071]
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: (16)
As of 2014-07-22 15:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (117 votes), past polls