http://tech.bayashi.net/pdmemo/variable.html

■ちょっとコラム 〜変数のクリア〜

スカラー変数を未定義値に戻すには

   undef($hoge);

とします。

   $hoge = '';

これは、スカラー変数にNull(ヌル)を代入しています。

このふたつの違いは、 undef はメモリ上もクリアされますが、Null を代入してもメモリ領域上は確保されたままです。

   $hoge = '123abc';
   $hoge = '';

という流れの場合、$hoge = ''; と変数の中身はなくなってもメモリ領域上は '123abc' が代入された時のままです。

ちなみに、配列変数や連想配列は undef すると変数全体が未定義値となります。

   undef(@hoge);

   undef(%HOGE);

例えば、以下の様にすると、ひとつだけ未定義値に出来そうですが動作的には全体が未定義値になります。

   undef($hoge[3]);

   undef($HOGE{'page'});

個々の要素と値を削除するには、連想配列の場合は delete という関数が用意されています。配列変数の場合は shift や pop といった関数があります。