sub test { my ($x) = shift; return if !$x; our @o = $x; test($x-1); print("@o\n"); } test(3); # 1,1,1 #### sub test { my ($x) = shift; return if !$x; local our @o = $x; test($x-1); print("@o\n"); } test(3); # 1,2,3 #### sub foo { my ($x) = shift; our @o = 1; bar(); print("@o\n"); } sub bar { my ($x) = shift; our @o = 2; print("@o\n"); } foo(); # 2,2 #### sub foo { my ($x) = shift; local our @o = 1; bar(); print("@o\n"); } sub bar { my ($x) = shift; local our @o = 2; print("@o\n"); } foo(); # 2,1