标量行数组

时间:2011-08-14 18:25:42

标签: arrays perl

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

例如,考虑到这一点:

$lines = "line 1\nline 2\nline 3\n";

我想要检索这个:

$lines[0] --> "line 1\n"
$lines[1] --> "line 2\n"
$lines[2] --> "line 3\n"

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

4 个答案:

答案 0 :(得分:7)

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

@lines = split /(?<=\n)/, $lines;

答案 1 :(得分:4)

一种方法是使用split然后使用map

use warnings;
use strict;

my $lines = "line 1\nline 2\nline 3\n";
my @lines = map { "$_\n" } split /\n/, $lines;

答案 2 :(得分:3)

另一种方式,没有split

use warnings;
use strict;

my $lines = "line 1\nline 2\nline 3\n";
my @lines = $lines =~ /(.*\n)/g;

答案 3 :(得分:2)

使用split

my @lines = split(/\n/m, $lines);

编辑:保留换行符,在评论中提到的/^/m分割,或使用零宽度后视,如另一个答案中所述。