配列への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 = ();