Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
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
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 about the Monastery: (11)
As of 2014-09-19 12:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (138 votes), past polls