/ / Присъединяване към елементи от две масиви и създаване на масив на резултатите в perl - масиви, perl

Присъединете се към елементи от две масиви и създайте масив с резултати в perl - масиви, perl

Основно това, от което се нуждая, ако имам две масиви по-долу:

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]);
}

И горните работи. Но има ли по-добър начин да направите това?

Отговори:

6 за отговор № 1

Можеш да използваш map, която е прикрита линия:

my @result = map "$a[$_] $z[$_]", 0 .. $#a;

3 за отговор № 2

Вдъхновен от отговора на този въпрос, Можеш да използваш 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;
}