遍历数组引用

Iterating over an array reference

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

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

要遍历数组引用中的元素,您需要取消引用它。 foreach 需要一个列表。

foreach my $keyword ( @{ $bug->{keyword_objects} } ) {

您的对象是散列引用,因此您可以像这样进入它们的内部:

$keyword->{name}

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

$keyword->name