回答
由于第一品牌(潜在的)两个比较,先比较$nis
到$grp
和,如果失败,比较'pre-'.$nis
到$grp
,而第二个将只进行单次比较,$nis || 'pre-'.$nis
与$grp
。
您的问题是$nis || 'pre-'.$nis
不是quantum superposition可以取决于你如何看待它取任一值,则可能是$nis
或'pre-'.$nis
的单值。如果$nis
是真的(也就是说,它不是空字符串,undef,数字0或字符串“0”),那么该值将是$nis
。如果不是,则该值将是'pre-'.$nis
(考虑到真实性规则,这意味着'pre-'.$nis
将仅为'pre-'
或'pre-0'
)。
如果你想以比较两个值,一般需要做两次比较...但你可以通过让你测试对正则表达式的值做特定的比较在一个步骤:
if ($grp =~ /^(:?pre-)?$nis/) {
print "match3\n";
}
但是,为了可读性,我会坚持与您的第一次比较。
@daxim:你读了我的想法......有一次,我已经包含了一个链接到Q :: S自己,但改变了我的想法去除它,因为它似乎非常多“不适合生产使用”的模块,所以我会觉得我必须也包含使用更多的链接/例子“严重”的设置处理模块。 – 2011-04-11 12:03:45
+1参考量子叠加 – chepner 2012-07-24 13:35:31
($ nis ||'pre'。$ nis)计算为'预'。仅在$ nis未定义时为$ nis,0或空字符串。 所以在你的情况下,它总是评估为($ nis eq $ grp){... 坚持你的第一种方法,你会好的
有什么问题是“(A或B)等于C “和”(A等于C)或(B等于C)“意味着完全不同的东西。在你的第二个if
中,你已经让Perl首先计算$nis || 'pre-'.$nis
,然后看它是否等于$grp
。
计算$nis || 'pre-'.$nis
(有点)将$nis
和'pre-'.$nis
视为布尔(真/假)值。更准确地说,如果这不是Perl认为“false”的值,那么结果等于$nis
;否则它等于'pre-'.$nis
。在这种情况下,"qqq"
不是错误的,所以值只是"qqq"
。由于这不等于$grp
,因此第二个if
中的条件为false。用普通的语言,如果你说“3或6是素数”或者“乔或鲍勃是爱伦的兄弟”,人类听众会以我想你的第二个if
的解释方式来解释。但这不是我知道的任何计算机语言的作品。 (半例外:Grisworld的“图标”)
或(pre-5.10。1)
if (grep $_ eq $grp, $nis, "pre-$nis") {
print "match\n";
}
我会写grep解决方案为'if(grep {$ _eq $ grp}($ nis,“pre $ nis”))',这更清晰,IMO。 – mscha 2011-04-11 09:50:21
strpos返回在第一次发现了$针,它可以是0。由于0也解析为false的解决方案是使用严格比较的索引位置:如果(假== strpos( $ haystack,$ needle)...
- 1. 这个if语句有什么问题?
- 2. 这个if语句有什么问题
- 3. 这个ruby语句有什么问题?
- 4. 这个sql语句有什么问题?
- 5. 这个sql语句有什么问题?
- 6. 这个SQLite3语句有什么问题?
- 7. 这个MySQL语句有什么问题?
- 8. 这个PostgreSQL语句有什么问题?
- 9. 这个mssql语句有什么问题?
- 10. 这个MySQL'insert'语句有什么问题?
- 11. 这个MySQL语句有什么问题?
- 12. 这个mod_rewrite语句有什么问题?
- 13. 这个setChar语句有什么问题?
- 14. 这个mysql语句有什么问题
- 15. 这个UPDATE语句有什么问题?
- 16. 这个mySQL IF语句有什么问题?
- 17. 这个if else语句有什么问题?
- 18. 这个IF NOT语句有什么问题?
- 19. 这个else if语句有什么问题?
- 20. JavaScript中这个if语句逻辑有什么问题?
- 21. 好奇这个if语句有什么问题?
- 22. 这个else if语句在jQuery中有什么问题?
- 23. 我的if语句有什么问题?
- 24. 我的if语句有什么问题?
- 25. 我的if语句有什么问题?
- 26. 这个if语句有什么不对?
- 27. If if语句有问题
- 28. 这些jquery语句有什么问题?
- 29. 这条sql语句有什么问题
- 30. 这条SQL语句有什么问题?
通过提供以下两条信息,可以大大提高每一个“这不起作用”形式的问题:(1)你希望它做什么? )它做了什么呢? – 2011-04-11 08:58:28