迭代数组引用

Puf*_*ers 1 perl

# data $bug
{ 
 'keyword_objects' => [ 
    bless( { 'id' => 15, 'name' => 'CRASH'}, 'SomeModule::SomeFilename' ), 
    bless( { 'id' => 6, 'name' => 'CUSTOMER' }, 'SomeModule::SomeFilename' ) ],
 'category' => 'error'
}
Run Code Online (Sandbox Code Playgroud)
   foreach my $keyword ($bug->{keyword_objects}) {
     print Dumper($keyword);
   }
Run Code Online (Sandbox Code Playgroud)

它打印整个keyword_objects而不是其中的单个项目。现在你应该很明显我对 Perl 知之甚少,我还想问问name在每个关键字中引用的正确方法是什么。

sim*_*que 5

要迭代数组 ref 中的元素,您需要取消引用它。foreach需要一个清单。

foreach my $keyword ( @{ $bug->{keyword_objects} } ) {
Run Code Online (Sandbox Code Playgroud)

你的对象是哈希引用,所以你可以像这样进入它们的内部:

$keyword->{name}
Run Code Online (Sandbox Code Playgroud)

然而,搞乱内部结构并不是一个好主意。相反,您应该编写访问器并将它们作为方法调用。

$keyword->name
Run Code Online (Sandbox Code Playgroud)