为什么打印(@ARGV)," \ n"在Perl中不打印换行符?

时间:2017-05-01 15:35:33

标签: perl

的原因是什么?
print (@ARGV), "\n";

不会打印结束换行符,但

print @ARGV, "\n";

呢?在这种情况下,我假设括号是中性的?或者即使他们正在捣乱@ARGV他们为什么还会打印新线呢?

由于

2 个答案:

答案 0 :(得分:8)

$ perl -we'print (@ARGV), "\n";'
print (...) interpreted as function at -e line 1.
Useless use of a constant (
) in void context at -e line 1.

之间没有区别
print (@ARGV), "\n";

print(@ARGV), "\n";

所以你正在做

print(@ARGV); "\n";

解决方案:

print +(@ARGV), "\n";
print @ARGV, "\n";
print((@ARGV), "\n");
print(@ARGV, "\n");
...

答案 1 :(得分:5)

圆括号永远不会在perl中出现。它们只确定优先级和synxtax。

print()是一个子程序调用,传递括号中的内容进行打印。即使前面有空间。当你在括号前有空格时,这可能不是你想要的,所以perl会警告你......如果你启用了警告。它还会警告你“\ n”是没用的,因为它处于无效环境中。

$ perl -we'print (@ARGV), "\n"'
print (...) interpreted as function at -e line 1.
Useless use of a constant ("\n") in void context at -e line 1.