Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^3: Surprised by Perl parse of ternary operator

by BrowserUk (Pope)
on Dec 16, 2011 at 13:18 UTC ( #943942=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Surprised by Perl parse of ternary operator
in thread Surprised by Perl parse of ternary operator

bend the rules differently.

I wouldn't exactly call it "bending the rules". For perl or the other two.

I read it that perl uses a minimal munch approach at that point of the syntax and hence sees:

( ( $fred == 42) ? ( $config = 'k1') : ( $config ) ) = 'k2';

Whereas the other two use a maximal munch approach and so see:

( $fred == 42 ) ? ( $config = 'k1' ) : ( $config = 'k2' );

I think the use case for Perl's way is using the ternary as the lvalue target of assignment. Something like:

$lo = $hi = 0; $x = 7; $mid = 5; $x < $mid ? $lo : $hi = $x; print "lo:$lo hi:$hi";; lo:0 hi:7

Can Ruby or PHP do that?


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.

The start of some sanity?


Comment on Re^3: Surprised by Perl parse of ternary operator
Select or Download Code
Re^4: Surprised by Perl parse of ternary operator
by Anonymous Monk on Dec 16, 2011 at 15:32 UTC

    Can Ruby or PHP do that?

    No, at least Ruby seems to lack a concept of a "variable" lvalue. (foo = bar) = 5 gives a syntax error, and x < mid ? lo : hi = x gets parsed as x < mid ? lo : (hi = x)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2014-07-31 05:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (245 votes), past polls