如何在Perl中打印由换行符分隔的列表元素?

Ser*_*nik 16 perl

在Perl中打印由换行符分隔的所有列表元素的最简单方法是什么?

Chr*_*utz 33

print "$_\n" for @list;
Run Code Online (Sandbox Code Playgroud)

在Perl 5.10中:

say for @list;
Run Code Online (Sandbox Code Playgroud)

其他方式:

print join("\n", @list), "\n";
Run Code Online (Sandbox Code Playgroud)

或(5.10):

say join "\n", @list;
Run Code Online (Sandbox Code Playgroud)

或者怎么样:

print map { "$_\n" } @list;
Run Code Online (Sandbox Code Playgroud)


jon*_*ang 9

为什么不滥用Perl的全局变量呢?

local $\ = "\n";
local $, = "\n";
print @array;
Run Code Online (Sandbox Code Playgroud)

如果您对不必要的变量插值感到兴奋,请随意使用此版本:

local $" = "\n";
print "@array\n";
Run Code Online (Sandbox Code Playgroud)

  • 当然,我们_could_只是让这个全局变量滥用安全和卫生:`sub arrprint(\ @; $$){my @a = @ {shift()}; 本地$\= @_?班次:$ \; 本地$,= @_?班次:$,; print @ $ aref; }(代码未经测试) (3认同)

Ano*_*on. 7

print join "\n", @list;
Run Code Online (Sandbox Code Playgroud)

  • 和?问题具体说*由*分隔. (5认同)
  • 这不会在末尾打印换行符,这在 Windows 上还不错,但在 *nix 系统上看起来很难看。 (2认同)
  • 您需要将\n放在双引号中以将其解释为换行符.在单引号中,您将获得两个字符反斜杠和n. (2认同)