配列へのundefの代入では初期化できない
配列を初期化しようとして、C言語みたいに「NULLで初期化すればいいかな」的発想で
@array = undef;
とやると @array の中は
(undef)
と値であるundefの要素が1つだけの配列になってしまう。
このundef一つだけの配列を使うと、実行結果は以下のようになる。
print "size = ".@array; #→ size = 1
for ( @array ) { print "element:".$_.":\n"; } #element:: #僕はコレではまった。。 #ループが1回も回らないことを期待していたのにループしてしまっている。
初期化したい場合は
@array = ();
と空リストを代入するのが正しいやり方。
これだと、for ループも回らない。
ちなみに、ハッシュも空リストで初期化する。
%hash = ();