http://qs321.pair.com?node_id=1186718


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