Perlのundef

Perlでは、未定義な値をundefとして取り扱う。

$hoge; #$hoge = undef; と同じ

ここで$hogeを数値型として扱う場合は0として、
文字列型として扱う場合は空文字列として扱う。
また、NULL値もundefとして扱われるようだ。

$hoge += 3; #$hoge = 0 + 3; と同じ
$hoge .= "This is Perl"; #$hoge = "" . "This is Perl"; と同じ

undef値を出力しようとするとエラーになってしまう。

$hoge;
print $hoge;
#エラー
#Use of uninitialized value in print

このエラーを避けるために、変数が定義済みの場合のみ処理を実行するようなコードを書く必要がある。
変数が定義されているか(undefかどうか)を調べるために、
Perlではdefined関数が用意されているので、それを利用する。

$hoge;
if (defined($hoge)) {
 print $hoge;
}
else {
 print "Variable is undef";
}

defined関数は、引数として渡された値が定義されているならば真を、
未定義(undef)ならば偽を返す。
上記の条件を日本語に直すなら、
「もし、$hogeが定義されているならば$hogeを出力。未定義ならばVariable is undefを出力する。」
となる。

参考

http://www.amazon.co.jp/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AEPerl-%E3%83%A9%E3%83%B3%E3%83%80%E3%83%AB%E3%83%BBL-%E3%82%B7%E3%83%A5%E3%83%AF%E3%83%AB%E3%83%84/dp/4873111269/ref=sr_1_1?ie=UTF8&s=books&qid=1255487509&sr=8-1:title=初めてのPerl] ランダル・L. シュワルツ、トム フェニックス、Randal L. Schwartz、 Tom Phoenix P44〜P46
http://www.yamareco.com/ippiki/detail.php?mid=26&mver=0
http://d.hatena.ne.jp/marsonic/20090302/1235984271