的原因是什么?
print (@ARGV), "\n";
不会打印结束换行符,但
print @ARGV, "\n";
呢?在这种情况下,我假设括号是中性的?或者即使他们正在捣乱@ARGV
他们为什么还会打印新线呢?
由于
答案 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.