37.50.48

%20 の ブログ

Perl では「偽⇒0」は真だが「0⇒偽」は必ずしも真でない

Perl では、真偽値として解釈した値が偽であるならば、数値として解釈した値は 0 である。しかし、数値として解釈した値が 0 であっても、真偽値として解釈した値が偽になるとは限らない。

真偽 +0  .'' 備考
0 0 '0'  
0b0 0 '0'  
0x0 0 '0'  
0e5 0 '0'  
0.0 0 '0'  
.0 0 '0'  
'0' 0 '0' 空でない文字列で偽になるのはこれだけ
'' 0 ''  
() 0 ''  
(123,456,0) 0 '0' コンマ演算子
(@a=()) 0 '0'  
undef 0 ''  
11 11 '11'  
011 9 '9' 8進数
0b11 3 '3' 2進数
0x11 17 '17' 16進数
1e5 100000 '100000' 指数表記
123.456 123.456 '123.456'  
0.123 0.123 '0.123'  
.123 0.123 '0.123'  
'11' 11 '11'  
'011' 11 '011' 8進数として解釈されない
'0b11' 0 '0b11' 2進数として解釈されない
'0x11' 0 '0x11' 16進数として解釈されない
'0e5' 0 '0e5'  
'1e5' 100000 '1e5' 指数表記として解釈される
'0.0' 0 '0.0'  
'123.456' 123.456 '123.456'  
'0.123' 0.123 '0.123'  
'.123' 0.123 '.123'  
'0abc' 0 '0abc'  
'123abc' 123 '123abc'  
'abc' 0 'abc'  
(0,123,456) 456 '456' コンマ演算子
(@a=(0)) 1 '1'  
(@a=(123,456,0)) 3 '3'