为一个简单的问题道歉,但我对Perl很新! 我有一个名为@input的数组,它有以下数据(注意@input的大小并不总是相同):
[0] 20004 11189 20207
[1] 12345 1234 123 12 1
我想创建一个名为@elements的新数组,它将数据重新排列为:
[0] 20004
[1] 11189
[2] 20207
[3] 12345
[4] 1234
[5] 123
[6] 12
[7] 1
谢谢!
答案 0 :(得分:2)
嗯,要么它是需要分裂的一维数组,要么是需要展平的二维数组。所以,这是每个任务的子目录。
use v5.10;
use strict;
use warnings;
my @input1 = ("20004 11189 20207", "12345 1234 123 12 1");
my @input2 = ([qw"20004 11189 20207"], [qw"12345 1234 123 12 1"]);
sub one_dim { # Simple extract digits with regex
return map /\d+/g, @_;
# return map split, @_; # same thing, but with split
}
sub two_dim { # Simple expand array ref
return map @$_, @_;
}
my @new = one_dim(@input1);
say for @new;
@new = two_dim(@input2);
say for @new;
答案 1 :(得分:1)
比Jon的答案更有效率:
@output = map { split / / } @input;
答案 2 :(得分:0)
$tmparr = join(" ", @input);
@elements = split(" ", $tmparr);
这有用吗?
修改: TLP 在下面的评论中提供了更好的解决方案,map split, @input