将数组转换为字符串,并在字符串中嵌入换行符

ash*_*ony 0 arrays perl

我需要将perl数组转换为单个字符串变量,其中包含用换行符分隔的所有数组项。

my $content = "";
@names=('A','C','C','D','E');
$content = $content . join($", @names) . "\n";
print $content;
Run Code Online (Sandbox Code Playgroud)

我打算将输出如下所示:

A
C
C
D
E
Run Code Online (Sandbox Code Playgroud)

但我得到:

A C C D E
Run Code Online (Sandbox Code Playgroud)

为什么不\n兑现换行符?

ike*_*ami 5

由于似乎不仅在每行之间都需要换行,而且在最后一行之后也需要换行,因此可以使用以下任一方法:

join("\n", @names) . "\n"
Run Code Online (Sandbox Code Playgroud)

要么

join("", map "$_\n", @names)
Run Code Online (Sandbox Code Playgroud)

这些等效,除了数组为空时。在这种情况下,第一个导致换行,第二个导致空字符串。


顺便说说,

 $content = $content . EXPR;
Run Code Online (Sandbox Code Playgroud)

可以写成

 $content .= EXPR;
Run Code Online (Sandbox Code Playgroud)