<div class="section">
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