我正在研究Perl的一些初级示例。
print "\n6 less than 7 and 7 greater than 2 : ", 6 < 7 and 7 > 2, "\n";
print ((3 + 2)/5), "\n";
最后的换行没有发生。为什么呢?
答案 0 :(得分:7)
这是运营商优先权的问题。 and
的优先级非常低,通常只能用于控制流程。 Perl会像这样解析你的代码:
(print "\n6 greater than 7 and 7 greater than 2 : ", 6 < 7) and (7 > 2, "\n");
(print +(3 + 2)/5), "\n";
解决方案:
使用&&
而不是and
或者,使用parens强制某些优先权:(6 < 7 and 7 > 2)
parens也用于函数调用中的参数列表。如果您不想要这种解释,请在parens之前加+
:
print +((3 + 2)/5), "\n";
与
相同print( ((3 + 2)/5), "\n" );
使用say
函数代替print
,因为say
会自动附加换行符:
use feature 'say';
say +(3 + 2)/5;