将多行字符串转换为数组

Tre*_*ree -2 perl

如何将多行字符串转换为数组?

my $text= " ads da
sda
s 
da
d
as

das
d a as dasd
\n

";
Run Code Online (Sandbox Code Playgroud)

注意:我不想删除或删除换行符?

Zai*_*aid 21

目前的问题可能更明确.

my @text = split "\n", $text;
Run Code Online (Sandbox Code Playgroud)

  • Downvoter:小心解释这个答案有什么问题? (6认同)

wde*_*aum 14

你可以使用^元字符和正则m表达式修饰符分割行的开头(让^匹配行的开头而不是字符串的开头):

split /^/m, $text
Run Code Online (Sandbox Code Playgroud)

其实,你可以离开了m,因为split把它放在你在这种情况下.来自perldoc -f split:"A PATTERN of"/ ^ /"被视为"/ ^/m",因为它没有多大用处."

使用您的值$text,此代码:

use Data::Dumper;
$Data::Dumper::Useqq=1;
print Data::Dumper->Dump([[split /^/, $text]], ["*text"]);
Run Code Online (Sandbox Code Playgroud)

打印这个:

@text = (
          " ads da\n",
          "sda\n",
          "s \n",
          "da\n",
          "d\n",
          "as\n",
          "\n",
          "das\n",
          "d a as dasd\n",
          "\n",
          "\n",
          "\n"
        );
Run Code Online (Sandbox Code Playgroud)