undef の意味。

print $a if $a;
print $a if defined $a;

上の文と下の文の違いはほとんど無い。一点だけ違うのは、0 もしくは、"0" が $a に設定されていた場合。「if $a」 と書いた場合は、0、"0" は偽と判断されるので、何も表示されない。「if defined $a」と書いた場合は、"0" が表示される。値が 0 であっても、それは定義されていることには変わりが無いからだ。


ということで、値に 0 がくるような場合は、ハマルことも考えられるので、「if defined $a」を使うようにしといたほうが無難なのかもしれない。