Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^2: return value of "if" (documentation?)

by ikegami (Patriarch)
on Jan 08, 2014 at 15:17 UTC ( [id://1069819]=note: print w/replies, xml ) Need Help??


in reply to Re: return value of "if" (documentation?)
in thread return value of "if" (documentation?)

Deparse tries to reproduce code, while Concise shows what's actually there.

A more accurate demonstration:

$ perl -MO=Concise,-exec -e'print if $a' 1 <0> enter 2 <;> nextstate(main 1 -e:1) v:{ 3 <#> gvsv[*a] s 4 <|> and(other->5) vK/1 5 <0> pushmark s 6 <#> gvsv[*_] s 7 <@> print vK 8 <@> leave[1 ref] vKP/REFC -e syntax OK $ perl -MO=Concise,-exec -e'$a and print' 1 <0> enter 2 <;> nextstate(main 1 -e:1) v:{ 3 <#> gvsv[*a] s 4 <|> and(other->5) vK/1 5 <0> pushmark s 6 <#> gvsv[*_] s 7 <@> print vK 8 <@> leave[1 ref] vKP/REFC -e syntax OK

But the question is about the if statement.

$ perl -MO=Concise,-exec -e'if ($a) { print }' 1 <0> enter 2 <;> nextstate(main 3 -e:1) v:{ 3 <#> gvsv[*a] s 4 <|> and(other->5) vK/1 5 <0> pushmark s 6 <#> gvsv[*_] s 7 <@> print vK 8 <@> leave[1 ref] vKP/REFC -e syntax OK

Replies are listed 'Best First'.
Re^3: return value of "if" (documentation?)
by LanX (Saint) on Jan 08, 2014 at 15:32 UTC
    > Deparse tries to reproduce code,

    True but B::Deparse has documented options to switch of the reconstruction of if from and-op. I chose one of the ways¹...

    I also checked it with B::Terse before posting, just wanted to keep the post short.

    Thanks for supporting my point. :)

    > But the question is about the if statement.

    Do you imply that a post-fix if is not a "statement" like pre-fix if ?

    Cheers Rolf

    ( addicted to the Perl Programming Language)

    ¹)

    -xLEVEL Expand conventional syntax constructions into equivalent ones that exp +ose their internal operation. ... If LEVEL is at least 7, "if" statements will be translated into equivalent expressions using "&&", "?:" and "do {}"; for instance
    lanx@nc10-ubuntu:~$ perl -MO=Deparse,-x7 -e 'if($a){print $b}' $a and do { print $b }; -e syntax OK

      B::Deparse has documented options to switch of the reconstruction of if from and-op. I chose one of the ways¹...

      Maybe I wasn't clear enough: B::Deparse can show they're similar as long as you assume the output is correct. B::Concise can show they're the same, and the output will be correct.

      Do you imply that a post-fix if is not a "statement" like pre-fix if ?

      No. The statement with the post-fix if is not an if statement, but I was not implying it's not a statement. I was implying it's not an if statement.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2024-04-20 15:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found