在 Perl 中迭代哈希

Dan*_*ana 2 perl perl-hash

我是 Perl 新手,正在努力解决哈希问题。我想循环遍历哈希,这意味着我想访问“obj”中的所有元素(每个“obj”的数字可以不同),例如:

   $VAR1 = { 'obj1' => ['par1', 
                         'par2', 
                         'par3'
                        ],
              'obj2' => ['par1', 
                         'par2', 
                         'par3',
                         'par4'
                        ]
    }
Run Code Online (Sandbox Code Playgroud)

下面的代码片段仅循环“obj”。如何访问 obj 中的元素?

foreach my $key (keys %hash) 
{
   print ($key)
}
Run Code Online (Sandbox Code Playgroud)

知道如何访问对象内的 par 或 Perl 文档参考吗?谢谢您的帮助!

Tim*_*and 5

$VAR1 = { 'obj1' => ['par1', 
                     'par2', 
                     'par3'
                 ],
          'obj2' => ['par1', 
                     'par2', 
                     'par3',
                     'par4'
                 ]
      };

foreach my $obj ( keys %{ $VAR1 } ) {
    print "$obj => @{ $VAR1->{$obj} }\n";
}
# obj2 => par1 par2 par3 par4
# obj1 => par1 par2 par3
Run Code Online (Sandbox Code Playgroud)

$VAR1:对哈希值的引用。
%{ $VAR1 }:指向的哈希值$VAR1
$obj:在循环中,这被分配给 的每个键%{ $VAR1 }
$VAR1->{$obj}:对数组的引用。
@{ $VAR1->{$obj} }:指向的数组$VAR1->{$obj}

参考:

perlreftut - Mark 关于参考文献的非常简短的教程:https ://perldoc.perl.org/perlreftut