in reply to Reference to return value of a subroutine
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' # ];
|
|---|