В Perl, как сделать хэш из массивов @A и @B, имеющих одинаковое количество элементов? Цель состоит в том, чтобы каждое значение @A было ключом к значению в @B. Результирующий хеш %C позволит затем однозначно идентифицировать элемент из @B, предоставляя ключ из @A.
@A
@B
%C
это так же просто, как
my %c; @c{@a} = @b;
use List::MoreUtils 'mesh'; my %c = mesh @a, @b;
Вот как это делается внутри (если вы уверены в равном количестве элементов):
my %c = map { $a[$_] => $b[$_] } 0 .. $#a;
Если я правильно понимаю проблему:
my %c; $c{$a[$_]} = $b[$_] for (0 .. @a-1);
A - это ключи, B - значения хэша C:
use strict; use warnings; my @a = 1 .. 3; my @b = 4 .. 6; my %c; for (0 .. $#a) { $c{$a[$_]} = $b[$_] }
Имейте в виду, что в массиве A не должно быть повторяющихся значений.