如何使用Perl在散列中保留唯一键的所有三个值?

时间:2015-10-28 01:30:57

标签: perl hash unique-key

如果在hash中我有一个键和三个相同键的值。如何保留该密钥的所有三个值?

例如,美国是我的关键,它有三个价值观。

America = Clinton; America = Bush; America = Obama; 
if I use while loop `while(($a,$b) = % Country)
     { 
        print "$b\n"; 
     } 

它只给了我第一个价值“克林顿”。那么,如何在循环中保留给定键的所有值?请帮帮我。

2 个答案:

答案 0 :(得分:4)

以下是使用数组散列的示例:

my %presidents;

while (<DATA>) {
  chomp;
  my ($country, $president) = split /=/;
  push @{$presidents{$country}}, $president;
}

while (my ($country, $prez_ref) = each %presidents) {
  print "$country => @$prez_ref\n";  
}   

__DATA__
America=Clinton
America=Bush
America=Obama

答案 1 :(得分:2)

my %country = (
    'America' => ['Clinton', 'Bush', 'Obama'],
    'UK'      => 'Maggie'
    );

while (($a, $b) = each %country) {
    print ref $b ? join ", ", @$b : $b, "\n";
}