首页 > 解决方案 > 遍历数组引用

问题描述

# 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在每个关键字中引用的正确方法是什么。

标签: perl

解决方案


要遍历数组 ref 中的元素,您需要取消引用它。foreach需要一份清单。

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

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

$keyword->{name}

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

$keyword->name

推荐阅读