在perl哈希中向同一个键添加多个值

时间:2017-06-12 17:15:52

标签: perl hash key

我有哈希。

%hash1:

cavallaro; amg; 
gariboldi; amg; 
dalfabbro; mdg_dig; 
valerio; apb_fmtrd; 

%hash2:

cavallaro; 32; 
gariboldi; 6; 
dalfabbro; 62; 
valerio; 19; 

我想用这样的键组合它们;

cavallaro; 32; amg; 
gariboldi; 6; amg; 
dalfabbro; 62; mdg_dig; 
valerio; 19; apb_fmtrd;

如何为同一个键添加多个值。 请提出任何建议。

1 个答案:

答案 0 :(得分:4)

您可以在每个键上存储数组引用:

#! /usr/bin/perl
use strict;
use warnings;

my %hash1 = qw( cavallaro amg
                gariboldi amg
                dalfabbro mdg_dig
                valerio apb_fmtrd );

my %hash2 = qw( cavallaro 32
                gariboldi 6
                dalfabbro 62
                valerio 19 );

my %r;
for my $k1 (keys %hash1) {
    $r{$k1} = [ $hash2{$k1}, $hash1{$k1} ];
}

use Data::Dumper; print Dumper \%r;

输出:

$VAR1 = {
          'gariboldi' => [
                           '6',
                           'amg'
                         ],
          'valerio' => [
                         '19',
                         'apb_fmtrd'
                       ],
          'dalfabbro' => [
                           '62',
                           'mdg_dig'
                         ],
          'cavallaro' => [
                           '32',
                           'amg'
                         ]
        };