パッケージスコープでmy宣言
下位スコープや副処理で宣言を忘れていても分からなくなってしまう。
本当に必要な宣言以外はブロックの中へ。
use strict; my $b; # 悪い例 { my $g; # 良い例 # このブロックに初期化コードなど、パッケージを読み込んだ時点で実行されるコードを。 } sub s { my $b; # 有っても無くてもプログラムが動いてしまう。 # このブロックに$bの宣言が無い場合、ここではパッケージスコープの$b(悪い例)を使うことになってしまう。 # strictプラグマを使っているにも関わらず、$bの変数宣言が抜けていることに気付けない。 }