合并数组以在perl中创建新数组

Vin*_*nay 7 arrays perl

将两个数组(逐列)合并到perl中的新复合数组中的方法是什么?

@数组1

car
scooter
truck
Run Code Online (Sandbox Code Playgroud)

@数组2

four
two
six
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下内容:

my @merged = (@array1, @array2); print @merged;
Run Code Online (Sandbox Code Playgroud)

但它将两个数组合并在一列中,如下所示:

car
scooter
truck
four
two
six
Run Code Online (Sandbox Code Playgroud)

但我想要的是如下:

@merged[0] @merged[1] 
car             four
scooter         two
truck           six
Run Code Online (Sandbox Code Playgroud)

mkH*_*Hun 8

在Perl中,如果要在列表中添加数组,它将自动展平为单个list

my @array = (@ar1,@ar2);
Run Code Online (Sandbox Code Playgroud)

如果要存储为数组,则应引用该数组并将其存储到另一个数组,例如

my @array = (\@ar1,\@ar2);
Run Code Online (Sandbox Code Playgroud)

现在@array具有@ar1和的引用@ar2

然后使用相应的数据类型取消引用的引用

就你而言

print @{$array[0]}; 
Run Code Online (Sandbox Code Playgroud)

最后,您可以使用以下内容

use warnings;
use strict;

my @array1 = qw(car scooter truck);
my @array2 = qw(four five six);

my @merged = (\@array1,\@array2); #referencing the array1 and array2

foreach my $i (0..$#{$merged[0]}) 
{
    # getting the last index value using $#{$merged[0]}

    printf ("%-10s%-10s\n",$merged[0][$i],$merged[1][$i]);


}
Run Code Online (Sandbox Code Playgroud)


Sco*_*ett 4

my @merged;
for (0 .. $#array1) {
    push(@merged, ([$array1[$_],$array2[$_]]));
}
Run Code Online (Sandbox Code Playgroud)

或者

my @merged;
push @merged, map {[$array1[$_], $array2[$_]]} 0 .. $#array1;
Run Code Online (Sandbox Code Playgroud)