ナクナイ

勉強用の備忘録

[perl] if とか defined とかの評価まとめ

perl の if とか defined とかの動作をまとめてみました。

                                                                                                                                                                  • +
if if defined print Dumper
$test; × × $VAR1 = undef;
$test = undef; × × $VAR1 = undef;
$test = ''; × $VAR1 = '';
$test = 0; × $VAR1 = 0;
$test = (); × × $VAR1 = undef;
$test = {}; $VAR1 = {};
$test = []; $VAR1 = [];
@test; × - $VAR1 = [];
@test = undef; - $VAR1 = [undef];
@test = ''; - $VAR1 = [''];
@test = 0; - $VAR1 = [0];
@test = (); × - $VAR1 = [];
@test = {}; - $VAR1 = [{}];
@test = []; - $VAR1 = [[]];
%test; × - $VAR1 = {};
%test = undef; - $VAR1 = {'' => undef};
%test = ''; - $VAR1 = {'' => undef};
%test = 0; - $VAR1 = {'0' => undef};
%test = (); × - $VAR1 = {};
%test = {}; - $VAR1 = {'HASH(0x166efc20)' => undef};
%test = []; - $VAR1 = {'ARRAY(0x166efc70)' => undef};
                                                                                                                                                                  • +

○・・・true
×・・・false
- ・・・エラー(※)

※ defined はスカラー関数にのみ有効なものだよ的なエラーが発生 (defined(@array) is deprecated / defined(%hash) is deprecated)
perldoc にも非推奨と記載があります Perlの組み込み関数 defined の翻訳 - perldoc.jp

ちなみに検証環境はv5.8.8です