パッケージ変数

今日、新入社員のコードをレビューしたのだが、意味もなく、パッケージ変数を使用しているのを発見した。

無知なパッケージ変数の使用は悪です。 やめてください。なぜって?

そう、パッケージ変数はどこでも使えて超便利だから、バシバシ使う病にかかります。そして、そのデバッグや保守をしたことがあるのが、何を隠そう私です。パッケージ変数だけで、20個はあったね。そして、それがハッシュで、かなりの階層… そして、変更し放題…

バグがでて、調べると、5階層ぐらい上の関数内で、パッケージ変数を使用しており、値が空だからエラーでこけてるんだよ、おいおい調査に1時間かかったよ。勘弁して。というのが、一日数回あるようなシステムの保守でした。まぁ、それが入社して最初のシステムだったのは秘密。良い経験でしたよ。トラウマになりましたから。

さて、私はつかうなといっているわけではないので注意してください。


フレームワーク使用で、あなたがかぶせた部分でグローバルでも足したい物などがあるでしょ?
そういう時には便利だよねぇ。 ログの関数とか、DBのコネクションとか。

ただ、現在は私は直接つかうのではなく、関数にかましてますが。さらに、Exportしちゃってます。


use var qw/$log/;

sub log {
return $log;
}

こういう形で、とりあえず直接は、使用しないようにしています。