Variables declared with my inside a subroutine stay local to that subroutine.

Lexical Variables

lexical_variables.pl
use strict;
use warnings;

sub add_bonus {
    my ($base, $bonus) = @_;
    my $inside_total = $base + $bonus;
    return $inside_total;
}

my $base = 10;
my $bonus = ;
my $result = add_bonus($base, $bonus);

print "base=$base\n";
print "bonus=$bonus\n";
print "result=$result\n";
use strict;
use warnings;

sub add_bonus {
    my ($base, $bonus) = @_;
    my $inside_total = $base + $bonus;
    return $inside_total;
}

my $base = 10;
my $bonus = ;
my $result = add_bonus($base, $bonus);

print "base=$base\n";
print "bonus=$bonus\n";
print "result=$result\n";
use strict;
use warnings;

sub add_bonus {
    my ($base, $bonus) = @_;
    my $inside_total = $base + $bonus;
    return $inside_total;
}

my $base = 10;
my $bonus = ;
my $result = add_bonus($base, $bonus);

print "base=$base\n";
print "bonus=$bonus\n";
print "result=$result\n";
lexical variable A lexical variable belongs to the block where it is declared.