遍历数组引用
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
# 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