sub test_a { my $var = "Hello World\n"; } sub test_b { print($var); # XXX Doesn't print Hello World. } test_a(); print($var); # Doesn't print Hello World. #### sub test_a { local $var = "Hello World\n"; } sub test_b { print($var); # Prints Hello World. } test_a(); print($var); # Doesn't print Hello World. #### sub test { $_ = $_[0]; s/([a-z])/uc($1)/eg; return $_; } foreach (qw(a b c)) { print(test($_), "\n"); } $ perl script.pl Modification of a read-only value attempted at script.pl line 3. #### sub test { local $_ = $_[0]; s/([a-z])/uc($1)/eg; return $_; } foreach (qw(a b c)) { print(test($_), "\n"); } $ perl script.pl A B C