in reply to return a ref to a return value (array) of another sub

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.