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' |