>>215
myは新しく変数を作って有効範囲の中ではそっちを
アクセスする。元の変数はそのまま残ってるので
package名をつければアクセスできる。

localはシンボルテーブルがもっている変数の領域
へのリファレンスを退避して新しい領域を割り当てる。
ブロックを抜けるときに元に戻す。

以下のプログラムのmyとlocalを入れ替えて
実行するとわかりやすいかも?

$x = 1;
print \$x, "\n";
{
my $x = 2;
print \$x, "\n";
print \$::x, "\n";
}
print \$x, "\n";