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

Subroutines cannot return arrays, they can return lists. When you put a backslash in front of a list, Perl turns it into a list of references to whatever made up the list. It's a convenience feature.

You could either have x return an array ref, or you could have y put the results of x into an array ref

sub x { [my @a = (1, 2, 3)] }; # or sub y { [&x()] } # The & is unnecessary, though

Caution: Contents may have been coded under pressure.