3 votes

Tableau de hachage perl des tableaux

Je cherche à accéder aux éléments d'un tableau qui fait partie d'un hash.

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

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

Je peux accéder aux clés avec une boucle foreach :

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

Comment accéder au tableau de numéros de port ('8001' , '8002') dans le hash ?
Merci pour l'aide!

5voto

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

1voto

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

1voto

David W. Points 49436
$vsnhash{name2}->[0];   #8001
$vsnhash{name2}->[1];   #8002
$vsnhash{name1}->[0];   #8000

Code wise:

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

Le $#{$key} signifie la dernière entrée dans le tableau @{$key. Rappelez-vous que $key est une référence à un tableau tandis que @{$key} est le tableau lui-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X