### re-worked version of your original code my $ref1 = [(0..9)]; ### start with anon array refs my $ref2 = [('a'..'l')]; ### from the very beginning my ($aOne, $aTwo) = &f($ref1, $ref2); print '@a1 is: '. "@{$aOne}\n"; print '@a2 is: '. "@{$aTwo}\n"; sub f { my $a1 = shift || die 'Hey! I expected an array ref '; my $a2 = shift || die 'expected array ref here too '; ### do something, for example ... @{$a2} = reverse @{$a2}; return ($a1, $a2); } __END__ @a1 is: 0 1 2 3 4 5 6 7 8 9 @a2 is: l k j i h g f e d c b a