[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です