为什么要打印(@ARGV)”\";不';你不能用Perl打印换行符吗?

为什么要打印(@ARGV)”\";不';你不能用Perl打印换行符吗?,perl,Perl,那是什么原因 print (@ARGV), "\n"; 不打印结尾换行符,但 print @ARGV, "\n"; 是吗?我假设括号在这种情况下是中性的?或者,即使他们正在对@ARGV进行翻页,他们为什么还要在换行符上进行打印 谢谢 两者之间没有区别 print (@ARGV), "\n"; 及 你在做什么 print(@ARGV); "\n"; 解决方案: print +(@ARGV), "\n"; print @ARGV, "\n"; print((@ARGV), "\n"); pr

那是什么原因

print (@ARGV), "\n";
不打印结尾换行符,但

print @ARGV, "\n";
是吗?我假设括号在这种情况下是中性的?或者,即使他们正在对
@ARGV
进行翻页,他们为什么还要在换行符上进行打印

谢谢

两者之间没有区别

print (@ARGV), "\n";

你在做什么

print(@ARGV); "\n";
解决方案:

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

在perl中,括号从不使用元组。它们只确定优先级和synxtax

print()是一个子程序调用,将括号中的内容传递给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.

使用警告
告诉您如果这不是100%清楚的话:语句是“计算\@ARGV的print()函数,然后计算字符串表达式“\n”。print()打印\@ARGV,表达式“\n”被简单地计算并丢弃。
print +(@ARGV), "\n";
print @ARGV, "\n";
print((@ARGV), "\n");
print(@ARGV, "\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.