Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Reference to return value of a subroutine

by golux (Chaplain)
on Apr 02, 2017 at 13:56 UTC ( [id://1186718]=note: print w/replies, xml ) Need Help??


in reply to Reference to return value of a subroutine

You can take the reference of a subroutine's return value. You did just that, and can see it with:
use feature qw( say ); use Data::Dumper; sub foo{ return (0, 1); } my $var = \(foo()); # $var IS a reference to the last item of *list* +(0, 1) say Dumper($var); # Prints $VAR = \1;

To make it more obvious, try this:

sub foo{ return ('blue', 'green'); } my $var = \(foo()); say Dumper($var); # Prints $VAR = \'green';

What's happening is that you're returning a list that gets evaluated in scalar context, whose behavior is to take the last item of the list.

If you want to capture the whole list, try returning an ARRAY reference instead (then you don't even need the extra reference):

use feature qw( say ); use Data::Dumper; sub foo{ return [ 'blue', 'green' ]; } my $var = foo(); # Give me my ARRAY ref! say Dumper($var); # Prints $VAR1 = [ # 'blue', # 'green' # ];
say  substr+lc crypt(qw $i3 SI$),4,5

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1186718]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (5)
As of 2024-04-19 11:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found