{ my $var; } # $var no longer exists. #### package main; use strict; $main::var = 1; #$var = 1; # Error! { $main::var++; #$var++; # Error! our $var; # Disable "strict vars" for $var. $var++; # Same as "$main::var++;" } # "strict vars" is back on for $var. { $main::var++; #$var++; # Error! no strict 'vars'; # Disable "strict vars" for all vars. $var++; # Same as "$main::var++;" } # "strict vars" is back on for all vars. print("$main::var\n"); # Prints 5. #print("$var\n"); # Error! #### $main::var = 1; { local $main::var; # Saves current value of $main::var # and sets new value to undef. $main::var = 2; } # Restores saved value of $main::var. print("$main::var\n"); # Prints 1. #### package main; our $var; $var = 1; { local $var; # Saves current value of $main::var # and sets new value to undef. $var = 2; } # Restores saved value of $main::var. print("$var\n"); # Prints 1. #### sub recursive { our $state; ... if (...) { local $state = ~~~; recursive(); } ... } #### my $var = 1; our $alias; *alias = \$var; $alias = 2; print("$var\n"); # 2