Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

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

by ikegami (Pope)
on Jan 08, 2014 at 15:17 UTC ( #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


Comment on Re^2: return value of "if" (documentation?)
Select or Download Code
Replies are listed 'Best First'.
Re^3: return value of "if" (documentation?)
by LanX (Canon) 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
Node Status?
node history
Node Type: note [id://1069819]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (11)
As of 2015-07-28 09:29 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 (254 votes), past polls