我正在通过Perl的一些开始的例子。为什么这个Perl代码不会产生一个换行
print "\n6 less than 7 and 7 greater than 2 : ", 6 < 7 and 7 > 2, "\n";
print ((3 + 2)/5), "\n";
最后的换行符没有发生。为什么?
我正在通过Perl的一些开始的例子。为什么这个Perl代码不会产生一个换行
print "\n6 less than 7 and 7 greater than 2 : ", 6 < 7 and 7 > 2, "\n";
print ((3 + 2)/5), "\n";
最后的换行符没有发生。为什么?
这是一个运营商优先的问题。 and
具有非常低的优先级,通常应该只用于控制流。 Perl会分析你的代码是这样的:
(print "\n6 greater than 7 and 7 greater than 2 : ", 6 < 7) and (7 > 2, "\n");
(print +(3 + 2)/5), "\n";
的解决方案:当你打算使用布尔运算符
或者
使用&&
代替and
,使用的括号迫使某些优先权:(6 < 7 and 7 > 2)
parens也用于参数l在函数调用中。如果你不希望这个解释,把+
的括号前:
print +((3 + 2)/5), "\n";
相同
print(((3 + 2)/5), "\n");
使用say
函数而不是print
,为say
自动附加一个换行符:
use feature 'say';
say +(3 + 2)/5;
是啊,我正要次编辑e代码,无论如何。 – esh