http://qs1969.pair.com?node_id=837549


in reply to Empty List miracle (2)

If you compare the output of your empty_list routine in scalar and list context:
sub empty_list { return @{ [] } } my @y=(empty_list())[0]; my $x = (empty_list())[0]; use Data::Dumper;print Dumper \$x,\@y;
You will see that @y is an empty array, and $x is undef.

think of the difference between using $x and @y in your hash declaration:

my @y=(empty_list())[0]; # @y = (); my $x = (empty_list())[0]; # $x = undef; my %x = (foo=>$x); my %xx = (foo=>@y);
So, to use your function in your hash declaration, you need to force scalar context.
my %x=(foo=>scalar((empty_list1())[0]));