undef関数 - 未定義値
undef関数を使えば、未定義値を設定することができます。あるいは、引数に指定した変数の値を未定義にします。
undef undef(変数)
未定義値の設定は次のように行います。変数「$name」の値が未定義になります。
$name = "Kimoto"; $name = undef;
また次のようにundef関数の引数に変数を渡しても、変数の値を未定義にすることができます。
$name = "Kimoto"; undef $name;
配列やハッシュについてもundef関数を利用することができます。
@names = undef; undef @names; %scores = undef; undef %score;
未定義値の判定
未定義値かどうかを判定するためにはdefined関数を使用することができます。定義されている場合は真を、未定義の場合は偽を返します。
if (defined $name) { ... }
値が未定義だった場合を処理するのにunlessを使って書く方法もお勧めです。
unless (defined $name) { # 未定義だった場合の処理 }
未定義値との比較
undefは文字列として比較された場合は「空文字」として、数値として比較された場合は「0」として扱われます。
undef == 0 undef eq ""
warningsモジュールを使えば、このような場合に警告を発してくれて、未然にバグを防げるので、必ず宣言するようにしましょう。
use warnings;