数组的perl哈希

时间:2011-10-12 14:47:41

标签: arrays perl hash

我正在尝试访问作为哈希一部分的数组元素。

for my $idx ( 0 .. $#vss ) {
    push (@{$vsnhash->{$vss[$idx]}}, $vsports[$idx]);
}
print Dumper(\%$vsnhash);

($VAR1 = {
      'name2' => [
                   '8001',
                   '8002'
                 ],
      'name1' => [
                   '8000'
                 ]
    };

我能够使用foreach循环访问密钥:

foreach my $key ( keys %$vsnhash ) {
print "$key\n";
}

如何在哈希中访问端口号数组('8001','8002')? 谢谢你的帮助!

3 个答案:

答案 0 :(得分:5)

while (my ($k, $v) = each %$vsnhash) {
    print "$k: @$v\n";
}

答案 1 :(得分:1)

foreach my $key ( keys %$vsnhash ) {
   print "$key\n";
   foreach my $port (@{$vsnhash->{key}}){
      print "Port $port\n";
   }
}

答案 2 :(得分:1)

$vsnhash{name2}->[0];   #8001
$vsnhash{name2}->[1];   #8002
$vsnhash{name1}->[0];   #8000

代码明智:

foreach my $key (sort keys %vsnhash) {
   foreach my $index (0..$#{$key}) {
      print "\$vsnhash{$key}->[$index] = " . $vsnhash{$key}->[$index] . "\n";
   }
}

$#{$key}表示数组@{$key}中的最后一个条目。请记住,$key是对数组的引用,而@{$key}是数组本身。