Perl хэш массивов - PullRequest
       1

Perl хэш массивов

3 голосов
/ 12 октября 2011

Я пытаюсь получить доступ к элементам массива, который является частью хэша.

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 ]

5 голосов
/ 12 октября 2011
while (my ($k, $v) = each %$vsnhash) {
    print "$k: @$v\n";
}
1 голос
/ 12 октября 2011
$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} - сам массив.

1 голос
/ 12 октября 2011
foreach my $key ( keys %$vsnhash ) {
   print "$key\n";
   foreach my $port (@{$vsnhash->{key}}){
      print "Port $port\n";
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...