use strict; my $test = 'test'; my @X = values(); guest2(\@X, $test); sub values ( my @Y = qw(something something); return @Y; ) sub guest2 ( my @X = @{shift()}; # these copies of @X and $test my $test = shift ; # don't exist outside guest2() }