use strict; use warnings; use Data::Dumper; foo(1); bar(); foo(2); bar(); sub foo { my @a; push @a, shift; print \@a; print Dumper(\@a); sub bar { print \@a; print Dumper(\@a); } } #### Variable "@a" will not stay shared at c.pl line 17. #### ARRAY(0x1890e78)$VAR1 = [ 1 ]; ARRAY(0x1890e78)$VAR1 = [ 1 ]; ARRAY(0x18c2194)$VAR1 = [ 2 ]; ARRAY(0x1890e78)$VAR1 = [ 1 ];