Как иметь один массив в качестве ключа и другие несколько массивов в качестве значений в 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-сообществу, что вы приложили некоторые усилия, чтобы узнать и решить это самостоятельно (в частности, показав нам, что вы пытались). Скорее всего, поскольку вы этого не делали вообще, этот вопрос будет закрыт модератором.

Другие вопросы по тегам