perl/サブルーチン〜myとlocalでいろいろ実験してみた〜

また公開ボタンを押すのを忘れてた〜。これ、先週のです。
実験(1)

#! usr/bin/perl

use strict;
use warnings;

my $x=123;
print "a:$x\n";

{
    print "b:$x\n";
    my $x=456;

    &print_x;

    print "c:$x\n";
}
print "d:$x\n";
&print_x;
print "e:$x\n";

sub print_x{
    print "sub1:$x\n";
    $x .='x';
    print "sub2:$x\n";
}

結果(1)

a:123
b:123
sub1:123
sub2:123x
c:456
d:123x
sub1:123x
sub2:123xx
e:123xx

実験(2)

#! usr/bin/perl

use strict;
use warnings;

my $x=123;
print "a:$x\n";

{
    print "b:$x\n";
    my $x=456;

    &print_x;

    print "c:$x\n";

    sub print_x{
        print "sub1:$x\n";
        $x .='x';
        print "sub2:$x\n";
    }   
}
print "d:$x\n";
&print_x;
print "e:$x\n";

結果(2)

a:123
b:123
sub1:456
sub2:456x
c:456x
d:123
sub1:456x
sub2:456xx
e:123

実験(3)

# usr/bin/perl

use strict;
use warnings;

my $x=123;
print "a:$x\n";

{
    sub print_x{
        print "sub1:$x\n";
        $x .='x';
        print "sub2:$x\n";
    }

    print "b:$x\n";
    my $x=456;

    &print_x;

    print "c:$x\n";

}
print "d:$x\n";
&print_x;
print "e:$x\n";

結果(3)

a:123
b:123
sub1:123
sub2:123x
c:456
d:123x
sub1:123x
sub2:123xx
e:123xx