Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^2: wantarray alternative

by tqisjim (Beadle)
on Jul 10, 2013 at 21:24 UTC ( #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.


Comment on Re^2: wantarray alternative
Download Code
Re^3: wantarray alternative
by LanX (Canon) 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
Node Status?
node history
Node Type: note [id://1043569]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (17)
As of 2015-07-01 19:19 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 (17 votes), past polls