Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^2: wantarray alternative

by tqisjim (Beadle)
on Jul 10, 2013 at 21:24 UTC ( [id://1043569]=note: print w/replies, xml ) Need Help??


in reply to Re: wantarray alternative (Context propagation)
in thread wantarray alternative

I don't seem to be answering as fast as you're asking.

If the explanation is that map is being called in scalar context, then the following is unexpected:

sub lowercase { my @out = map { lc } @_ ; return @out ; } $name = lowercase( 'Jim', "Jeff" ) ; ## $name == 2

Even though map is called in an array context, the results don't change.

Very clever solution, yours. Clever, but not elegant.

Replies are listed 'Best First'.
Re^3: wantarray alternative
by LanX (Saint) on Jul 10, 2013 at 21:29 UTC
    > If the explanation is that map is being called in scalar context, then the following is unexpected:

    no! whatever comes after return is executed in the context of the sub's call.

    so in this case¹ $name = scalar @out

    It's true many people expect a LIST to be returned but thats generally wrong in scalar context.

    A helper routine  sub listify { (@_)[0..$#_] } might help to assure this "expected" behaviour, whenever you need to return a LIST².

    Cheers Rolf

    ( addicted to the Perl Programming Language)

    PS: please read the thread I linked before asking more questions.

    ¹) which isn't the code from the post I replied to, where a map-statement is returned

    UPDATE

    > Clever, but not elegant.

    Larry will be so devastated to hear this ... :´(

    UPDATE

    ²) FWIW

    DB<112> sub listify { (@_)[0..$#_] } DB<113> sub tst { listify map{lc} @_ } DB<114> $s =tst("A".."D") => "d" DB<115> @l =tst("A".."D") => ("a", "b", "c", "d")

      Larry will be so devastated to hear this ... :´(

      Nuff said

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1043569]
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-03-19 04:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found