my $pass = !$message;
我遇到了这个perl代码,其中$ message是一个字符串,$ pass被假设为一个布尔值。这将被检查为不是字符串的Perl等于?
ok ($pass, $test)
我很困惑什么是不是($)的消息?
这是如何转换为布尔值?
空字符串为False且非空字符串为真?
my $pass = !$message;
我遇到了这个perl代码,其中$ message是一个字符串,$ pass被假设为一个布尔值。这将被检查为不是字符串的Perl等于?
ok ($pass, $test)
我很困惑什么是不是($)的消息?
这是如何转换为布尔值?
空字符串为False且非空字符串为真?
!
是一元逻辑否定运算符。假字符串是""
和"0"
。如果这样的字符串在逻辑上被否定,则评估为1
。所有其他的字符串都是真实的。这些的否定是""
(空字符串)或数字0
。
其他错误值是undef
和数字0
。
因此,如果$message
未定义,则空字符串或零将通过ok ($pass, $test)
。
完全正确。在Perl中,以下项目是'假':
0
''
'0'
undef
其他任何内容都是正确的。因此,如果$message
不为空,未定义或'0'
,则$message
为真,且!$message
为假。
相关:http://stackoverflow.com/questions/1134962/why-does-1-give-me-nothing-in-perl – geoffspear
除了答案你可以搜索“布尔上下文”。 'perldoc perldata'有一些关于它的信息... – user1146332