perl - 遍历数组引用
问题描述
# 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
在每个关键字中引用的正确方法是什么。
解决方案
要遍历数组 ref 中的元素,您需要取消引用它。foreach
需要一份清单。
foreach my $keyword ( @{ $bug->{keyword_objects} } ) {
您的对象是哈希引用,因此您可以像这样进入它们的内部:
$keyword->{name}
然而,搞乱内部结构并不是一个好主意。相反,您应该编写访问器并将它们作为方法调用。
$keyword->name