subルーチン内での変数宣言(myとlocal)
subルーチン(関数)内ではスカラー変数を宣言するときに
my $x;
あるいは
local $x;
と宣言しましょう。 原則として1つのパッケージに1つの関数といっているわけですから,myだけを使っておけば良いということになるでしょう。とりあえず,よく分からなくても関数を定義するときは変数宣言のときにmyを書いておくようにしておけばよろしい。 正確なことを知りたければweb上を検索すればいくらでも見つかる。
myとlocalの違い
@ myで宣言した変数はある1つのサブルーチン内でのみ有効です。
A localで宣言した変数はある複数のサブルーチン間でのみ有効です。
B これら2つはmainルーチンとは独立しているので,mainルーチンから参照することはできません。