« myは私だけのモノ | Home | Movable Typeのエントリ投稿時の改行設定のプラグイン »

2006年12月18日

変数はみんなのモノ。ただし汚れている可能性があります。

myを使用しない場合の不具合ではないけどよくない組み方


#use strict;
#use warnings;

&main;
sub main{
$testStr = 'Hello!!';
print "main:$testStr\n";
&func();
}

sub func{
print "func:$testStr\n";
}

$testStrがグローバル変数の扱いになってしまっています。
use strict;
を記述していれば、エラーがでます。
記述していない場合は、エラーがでずに実行できてしまいます。

言語を覚え始めた時からは
use strict;
use warnings;
を常につけるようにしていかないと、mod_perlとかで動作させた時に
変数が初期化されていなくて、とんでもない動きになるスクリプトや、
普段からメモリを余分に使ってしまうスクリプトを量産してしまう
ことになります。

人事のように書きつつ私のことです。

コメントする