■ defined>abs

EXPR が未定義値 undef でない値かどうかを Boolean 値で返します。EXPR が指定されて いない場合には、$_ をチェックします。 失敗、ファイルの最後、システムエラー、初期化されていない変数、他の例外条件を意味 するために undef を返す関数は多々あります。この関数を使えば、undef を他の値と区 別することができます(簡単なBooleanテストでは、undef、zero、空の文字列、0 を区別 できないでしょう。これらは、すべて偽を意味してしまいます。)。undef はスカラーで すので、その存在は、必ずしも例外条件を意味するわけではないことに注意してください。 pop は、引数が空の配列だった場合、もしくは、返すべき要素がたまたま undef だった 場合に、undef を返します。 サブルーチン &func が定義されているかをチェックするために、defined(&func) を使う こともできます。 集合(連想配列、配列)で defined を使うのは、問題です。これは、集合用のメモリー が割り当てられたかどうかをレポートするものでした。この動作は、今後のPerlバージョ ンの機能から削除されるかもしれません。その代わりに、次の簡単なサイズテストを使っ てください。 if (@an_array) { print "has array elements\n" } if (%a_hash) { print "has hash members\n" } 連想配列の要素で使った場合は、値が定義されているかを調べることができますが、その 連想配列にキーが存在しているかはわかりません。キーの存在を調べるには、exists 関 数を使ってください。

文法

defined EXPR