Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: Reference to return value of a subroutine

by golux (Chaplain)
on Apr 02, 2017 at 13:56 UTC ( #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
Node Status?
node history
Node Type: note [id://1186718]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (2)
As of 2020-12-06 02:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How often do you use taint mode?





    Results (65 votes). Check out past polls.

    Notices?