x isn't returning an array, it's returning a list of values. Don't feel bad, as the array / list distinction can be a fine one and you've just hit smack into it. Either x could return an array reference itself which y would return verbatim (although that'd be somewhat inefficient unless it did something else as well as call x); or you could use the anonymous array constructor [] in y
sub x { my @a = ( 1, 2, 3 ); \@a } sub y { x() } ## or sub x { my @a = ( 1, 2, 3 ); } sub y { [ x( ) ] }
Note that in the second case x still is returning a LIST, not an ARRAY; y just packages that returned list of values up in a new (anonymous) array.
In reply to Re: return a ref to a return value (array) of another sub
by Fletch
in thread return a ref to a return value (array) of another sub
by telcontar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |