Perl: объединение элементов хэша

У меня есть 2 хеша.

my %hash1 = (
          '1.3.6.1.2.1.7.1.0' => 'switch_stuff1',
          '1.3.6.1.2.1.6.3.0' => 'switch_stuff4',
          '1.3.6.1.2.1.6.5.0' => 'switch_stuff5',
          '1.3.6.1.2.1.7.4.0' => 'switch_stuff2',
          '1.3.6.1.2.1.6.2.0' => 'switch_stuff3'
    );

my %hash2 = (
          '1.3.6.1.2.1.7.1.0' => 125858,
          '1.3.6.1.2.1.6.3.0' => 120000,
          '1.3.6.1.2.1.6.5.0' => 23766,
          '1.3.6.1.2.1.7.4.0' => 115336,
          '1.3.6.1.2.1.6.2.0' => 200
     );

Как видите, значения ключей для обоих хэшей одинаковы.

Мне нужно взять значения из %hash1 и использовать их как ключи для %hash2.

Выход:

$VAR1 = {
          'switch_stuff1' => 125858,
          'switch_stuff4' => 120000,
          'switch_stuff5' => 23766,
          'switch_stuff2' => 115336,
          'switch_stuff3' => 200
        };

Примечание. Количество пар ключ/значение в обоих хэшах всегда будет одинаковым.

С другой стороны, единственное, что важно для меня в %hash1, — это ценности.

'switch_stuff1',
'switch_stuff4',
'switch_stuff5',
'switch_stuff2',
'switch_stuff3'

Поэтому, если слияние хэшей, как я описал, невозможно, я могу вместо этого превратить %hash1 в массив, содержащий только значения.

Может ли кто-нибудь помочь новичку в Perl или, по крайней мере, указать мне правильное направление? Любая помощь будет принята с благодарностью.

Спасибо.


person user1300922    schedule 16.04.2012    source источник


Ответы (1)


Приблизительное время прибытия:

Ах, кажется, я неправильно вас понял. Вы хотели объединить два отдельных значения в хэш. Это легко сделать с помощью map:

my %hash3 = map { $hash1{$_} => $hash2{$_} } keys %hash1;
person TLP    schedule 16.04.2012
comment
Спасибо, это именно то, что мне было нужно :) - person user1300922; 17.04.2012