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

  • 本文关键字:打印 Perl 换行符 @ARGV perl
  • 更新时间 :
  • 英文 :


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

不打印结局新线,但

print @ARGV, "n";

是吗?我认为在这种情况下,括号是中立的吗?或者即使他们正在策划@ARGV,为什么他们还是要从新线上切碎?

谢谢

$ 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");
...

括号在perl中从不元素。他们仅确定优先级和综合。

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.

最新更新