use vars qw/$x, @y, %z, $d, @e, %f, $p, @q, %r/; $a = 10; my ($b) ; # what is the meaning of bracket around variable name ? { # ... my ($p, @q, %r); local ($d, @e, %f); # (1) # ... sub foo { # ... } # ... foo(17); # (2) bar($p,29); # (3) lbar($d, 31); # ... } # (4) # ... sub bar { # ... } { # ... local ($x, @y, %z); # (5) local $a = 20; my $a = 30; # ... sub baz { # ... } # ... baz(17); # (6) quux($x,29); # (7) # ... sub child { $b = a * 10; # which value of \$a will be available here ? } } # (8) # ... sub quux { # ... } # ... baz(29); # (9)