基本上我需要的是如果我有两个如下所示的数组:
my @a=("a","b","c");
my @z=("x","y","z");
我希望结果数组为:
("a x","b y","c z")
pre条件是数字是两个数组中的元素总是相同的。 post condtion命令应该与原始数组顺序相同。 我写了一个简单的循环
my $i;
for($i=0;$i<scalar(@a);$i++)
{
push(@result,$a[$i]." ".$z[$i]);
}
以上的作品。 但有没有更好的方法呢?
答案 0 :(得分:6)
您可以使用map
,这是一个伪装的循环:
my @result = map "$a[$_] $z[$_]", 0 .. $#a;
答案 1 :(得分:3)
灵感来自对this question的回答。您可以使用each_array
中的List::MoreUtils
来更清晰地一次迭代两个数组。
#!/usr/bin/perl
use warnings;
use strict;
use List::MoreUtils qw/each_array/;
my @a = qw/a b c/;
my @b = qw/x y z/;
my $it = each_array(@a, @b);
my @result;
while (my ($x, $y) = $it->()) {
push @result, $x . " " . $y;
}