答案 0 :(得分:24)
答案 1 :(得分:17)
Alex Howansky的警告意味着
print (52-80)*42 , "\n"
被解析为
(print(52-80)) * 42, "\n"
也就是说,包含(1)42次函数print(-28)
的结果的列表,以及(2)包含换行符的字符串。 (1)的副作用是将值-28
(没有换行符)打印到标准输出。
如果您需要打印以括号开头的表达式,则解决方法是在其前面添加+
:
print +(52-80)*42, "\n" # ==> -1176
答案 2 :(得分:6)
感谢Perl古怪的解析规则(哦,Perl,你好!),这些陈述:
print ((52-80)*42) , "\n";
print (52-80)*42 , "\n";
被解释为好像是他们写的:
(print ((52-80)*42)), "\n";
(print (52-80))*42, "\n";
这就是为什么你最终在一行上看到-1176-28
,并且缺少预期的空行。 Perl看到(print-expr), "\n";
并简单地抛弃换行而不是打印它。