my $var = 2; sub x{ print $var; } x(); # prints 2 $var = 3; x(); # prints 3 #### { my $var = 2; sub x{ print $var }; } ## $var goes out of scope; but x() remembers it. x(); # prints 2; # $var = 3; ## Would be an error my $var = 3; x(); ## Still prints 2; the $var above is a different $var.