标量行数组

new*_*ser 6 arrays perl

如何将包含字符串的标量转换为数组中的换行符,并将这些行作为元素?

例如,考虑到这个:

$lines = "line 1\nline 2\nline 3\n";
Run Code Online (Sandbox Code Playgroud)

我想要检索这个:

$lines[0] --> "line 1\n"
$lines[1] --> "line 2\n"
$lines[2] --> "line 3\n"
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想将换行保留在aray元素中.

TLP*_*TLP 7

您可以使用负面后卫来保留拆分中的换行符:

@lines = split /(?<=\n)/, $lines;
Run Code Online (Sandbox Code Playgroud)


Jor*_*dão 2

使用split

my @lines = split(/\n/m, $lines);
Run Code Online (Sandbox Code Playgroud)

编辑:要保留换行符,请/^/m按照评论中所述进行拆分,或者使用零宽度后视,如另一个答案中所述。

  • 尝试使用“/^/m”进行拆分。 (5认同)