如何解决为什么当$ v = false时,我没有从perl得到错误;
我在命令行上写道:
var explain = "yes";
myfunction() {
....
}
myfunction2() {
if ( explain == "yes") {
... } }
并没有产生错误,而是返回了“ 1”!
我记得过去,这返回了一个错误,以提醒我perl没有布尔类型。同时,perl中有什么变化?还是我记错了,而这始终是有效的代码?
解决方法
在没有strict的情况下,裸字false
被解释为字符串('false'
)。使用数字==
会将其数字化为0,并且将"true"
数字化为零。
B::Deparse清楚地表明了这一点:
$ perl -MO=Deparse -e '$v=false; if($v==true){print 1;}'
$v = 'false';
if ($v == 'true') {
print 1;
}
warnings会警告您4次:两次对未引用的裸词,两次对字符串的数字比较。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。