- Home ›
- Perl関数のリファレンス ›
- その他の関数
defined関数の使い方(未定義値かどうかを判別する)
Perl で用意されている組み込み関数の一つである defined 関数の使い方です。 defined 関数は引数の値が未定義値(undef)かどうかを判別して真または偽で返します。
(2022 年 09 月 27 日公開 / 2022 年 09 月 27 日更新)
defined関数の書式と基本的な使い方
defined 関数は次のように定義されています。
defined defined([EXPR])
引数が未定義値かどうかを判別します。 パラメータ: EXPR 対象の値又は関数 戻り値: 定義済みなら真(true)
1番目の引数には対象となる値を指定します。省略された場合は変数「$_」が使用されます。定義済みかどうかを判別し、定義済みの場合は真(true)を返します。値が未定義値となるのは初期化されていない変数の値や、ファイルの終端を読み込んだ時、システムエラーとなった時の戻り値などの場合があります。
if文などの条件式においては、未定義値(undef)、空文字、数字の0や文字の「0」なども全て偽と判別されますが、「defined」関数を使えば未定義(undef)だけを判別することが出来ます。
具体的には次のように記述します。
my $var; if (defined($var)){ print "定義済み\n"; }else{ print "未定義値\n"; }
またサブルーチンに対して「defined(&サブルーチン名)」を実行するとサブルーチンが定義されているかどうかを判別する事も出来ます。使い道が良く分かっていないので、また分かり次第書き直します。
では簡単なプログラムで確認してみます。
use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my $var; if (defined($var)){ print "定義済み\n"; }else{ print "未定義値\n"; } $var = "Test"; if (defined($var)){ print "定義済み\n"; }else{ print "未定義値\n"; } $var = ""; if (defined($var)){ print "定義済み\n"; }else{ print "未定義値\n"; }
上記を「test1-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。
-- --
Perl で用意されている組み込み関数の一つである defined 関数の使い方について解説しました。
( Written by Tatsuo Ikura )