{
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