#!/usr/bin/perl
#use strict;
use warnings;
sub foo { $n++; }
$n = 10;
print "$n\n"; # 10
foo();
print "$n\n"; # 11
####
#!/usr/bin/perl
use strict;
use warnings;
sub foo { $n++; } # Compile-time (strict) error!
our $n = 10;
print "$n\n"; # 10
foo();
print "$n\n"; # 11
####
#!/usr/bin/perl
use strict;
use warnings;
# "our $n;" disables "use strict 'vars';" for $n for the
# remainder of the lexical scope in which it is located.
sub foo { our $n; $n++; }
our $n = 10;
print "$n\n"; # 10
foo();
print "$n\n"; # 11
####
#!/usr/bin/perl
use strict;
use warnings;
sub foo { my $n; $n++; } # Different $n!
my $n = 10;
print "$n\n"; # 10
foo();
print "$n\n"; # 10
####
#!/usr/bin/perl
use strict;
use warnings;
sub foo { $n++; } # Compile-time (strict) error!
my $n = 10;
print "$n\n";
foo();
print "$n\n";
####
#!/usr/bin/perl
use strict;
use warnings;
my $n = 10;
sub foo { $n++; }
print "$n\n"; # 10
foo();
print "$n\n"; # 11