Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Can you explain the result?

by PerlOnTheWay (Scribe)
on Dec 06, 2011 at 13:15 UTC ( #942011=perlquestion: print w/ replies, xml ) Need Help??
PerlOnTheWay has asked for the wisdom of the Perl Monks concerning the following question:

sub func { my ($delimiter, $text) = @_; return 1 and 0; } use Data::Dumper; print Dumper(func());

guess what?

the result is $VAR1 = 1;

anyone knows the reason?

seems that Perl gives return the same priority as an ordinary sub,is this really a good design?

Comment on Can you explain the result?
Select or Download Code
Re: Can you explain the result?
by RMGir (Prior) on Dec 06, 2011 at 13:20 UTC
    Sure. The result of your function is the value 1, and that's what you're passing to Dumper...

    Now, if you called

    print Dumper(\&func);
    on the function reference, you'd get a slightly more interesting result:
    $VAR1 = sub { "DUMMY" };
    I guess my version of Dumper isn't up to decompiling subs - I'm guessing that's expected.

    Mike
      shouldn't  1 and 0 be false/0?
        As choroba said, return 1&&0 is different from return 1 and 0.

        $ perl -MB::Deparse -e' sub f{return 1 and 0;}; sub g{return 1 && 0}; $deparse=B::Deparse->new(); print "f(): ",$deparse->coderef2text(\&f),"\n"; print "g(): ",$deparse->coderef2text(\&g),"\n";' f(): { 0 if return 1; } g(): { return 0; }

        Mike
Re: Can you explain the result?
by choroba (Abbot) on Dec 06, 2011 at 13:26 UTC
      I know and has lower priority than &&,but it doesn't explain this issue.
        It does. Try with print instead of return to see.
Re: Can you explain the result?
by TJPride (Pilgrim) on Dec 06, 2011 at 16:33 UTC
    Rather than worrying about why Perl does this, it may be simpler to just do return (1 and 0);

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (9)
As of 2014-07-22 12:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (113 votes), past polls