Perl 显示对象数组中的数据

Perl 显示对象数组中的数据,perl,data-dumper,Perl,Data Dumper,我试图显示使用另一家公司的API获得的对象数组中的数据,但在尝试使用foreach循环时出错 我正在使用转储程序显示数组中的所有内容 print Dumper($object); 转储程序的部分输出: 'enable_dha_thresholds' => 'false', 'members' => [ bless( { 'ipv4addr' => '192.168.1.67', 'name' => 'name.something.com' }, 'S

我试图显示使用另一家公司的API获得的对象数组中的数据,但在尝试使用foreach循环时出错

我正在使用转储程序显示数组中的所有内容

print Dumper($object);
转储程序的部分输出:

'enable_dha_thresholds' => 'false', 'members' => [ bless( { 'ipv4addr' => '192.168.1.67', 'name' => 'name.something.com' }, 'Something::Network::Member' ), bless( { 'ipv4addr' => '192.168.1.68', 'name' => 'name.something.com' }, 'Something::Network::Member' ) ], 'comment' => 'This is a comment', 我收到这个错误: 无法对位于./script.pl第12行的未经许可的引用调用方法“ipv4addr”

我不确定自己是否完全理解Perl中的“有福”与“无福”之比,因为我对该语言还不熟悉

打印$members[0][0]->ipv4addr//这 工作

所以$members[0]是一个数组引用
您必须取消对数组的引用:

foreach my $member ( @{ $members[0] } ){
    print "IP". $member->ipv4addr()."\n";  
}
引用“未删减引用”的错误表明您没有使用对象;相反,您提供了一个数组引用,这是不同的:)

嗯,, 保罗

这是一个“数组引用”与“数组”的问题
$members[0]
是数组引用;
foreach
操作符处理数组(或列表,学究式)。你会想说

foreach my $member ( @{$members[0]} ) { ...
迭代
$members[0]
引用的元素

语法很复杂,在使用这些东西的过程中,您可能还会犯一些错误。让您了解最新情况的相关文档包括(或),以及和



顺便说一句,“受祝福”意味着引用“知道”它是什么类型的对象,以及它应该查看什么包来查看它可以运行什么方法。当您收到“未删除的引用”警告或错误时,通常意味着您传递的对象不是预期对象的某个对象——在这种情况下,
$members[0]
是未删除的引用,而您打算传递受祝福的引用
$members[0][0]
$members[0][1]
,等等。

谢谢,那正是我想要的。
foreach my $member ( @{$members[0]} ) { ...