Как иметь один массив в качестве ключа и другие несколько массивов в качестве значений в Perl hashmap?
У меня есть следующие массивы, мне нужно отобразить вывод @array2
а также @array3
на ключи @array1
в хэш-структуре.
@array1 = ('a', 'b', 'c');
@array2 = (1, 2, 3);
@array3 = ('j', 'k', 'l');
Ожидаемый результат:
a => [1, 'j']
b => [2, 'k']
c => [3, 'l']
1 ответ
Решение
Зацикливайтесь на каждом индексе первого массива и помещайте то, что вы хотите, в место назначения. Обратите внимание, что значения %hash
должны быть в списке-refs.
$ cat ./foo.pl
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @array1 = ( "a", "b", "c" );
my @array2 = ( 1, 2, 3 );
my @array3 = ( "j", "k", "l" );
my %hash;
for( my $i = 0; $i < scalar(@array1); $i++ ){
push( @{$hash{$array1[$i]}}, $array2[$i], $array3[$i] );
}
print Dumper( \%hash );
$ ./foo.pl
$VAR1 = {
'c' => [
3,
'l'
],
'a' => [
1,
'j'
],
'b' => [
2,
'k'
]
};
Обратите внимание, для дальнейшего использования важно показать SO-сообществу, что вы приложили некоторые усилия, чтобы узнать и решить это самостоятельно (в частности, показав нам, что вы пытались). Скорее всего, поскольку вы этого не делали вообще, этот вопрос будет закрыт модератором.