我只是在学习Perl的比较运算符.我尝试了以下代码: –
$foo=291; $bar=30; if ($foo < $bar) { print "$foo is less than $bar (first)\n"; } if ($foo lt $bar) { print "$foo is less than $bar (second)\n"; }
输出291小于30(秒).这是否意味着lt运算符总是将变量转换为字符串然后进行比较? Perl使lt运算符的行为与<运算符的不同之处在于什么?操作符? 谢谢,
解决方法
你的猜测是正确的.像lt这样的字母运算符将变量比作字符串,而符号表示像<将它们比作数字.您可以阅读
perlop
man page以获取更多详细信息.
理由是Perl中的标量没有输入,所以没有你告诉它Perl不会知道如何比较两个变量.如果它确实猜到了那么它有时会出错,这会导致不得不做’$a< ''$b强制字符串比较,这可能比lt更糟糕. 也就是说这是一个可怕的陷阱,它可能会让Perl的每个人都抓到新的东西,并且在使用较少的post-modern language后一段时间回到Perl时仍然会抓住我.