perl - 显示对象数组中的数据

标签 perl data-dumper

我正在尝试显示使用另一家公司的API获取的对象数组中的数据,但是当我尝试使用foreach循环时出现错误。

我正在使用Dumper来显示数组中的所有内容。

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',

I'm trying to extract the "members" which appears to be a double array:

//this works    
print $members->enable_dha_thresholds(); 

//this works
print $members[0][0]->ipv4addr; 

//does not work
foreach my $member ($members[0]){
     print "IP". $member->ipv4addr()."\n";  
}

我收到此错误:
无法在./script.pl第12行的无偏引用上调用方法“ipv4addr”。

我不确定Perl中的“祝福”与“祝福”是完全陌生的,因为我是该语言的新手。

最佳答案

print $members[0][0]->ipv4addr; //this works



因此$ members [0]是一个数组引用。
您必须取消引用数组:
foreach my $member ( @{ $members[0] } ){
    print "IP". $member->ipv4addr()."\n";  
}

引用“无误引用”的错误表明您没有使用对象。而是您提供了一个数组引用,这是不一样的:)

HTH,
保罗

关于perl - 显示对象数组中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5097709/

相关文章:

perl - 使用 Perl 或 Powershell,如何比较 2 个 CSV 文件并仅获取新行?

regex - 使用正则表达式在 perl 中打印出现的字母

使用 Data::Dumper 打印数组的 perl 散列

perl - 如何回读 Data::Dumper 的输出?

arrays - Perl - Data::Dumper 数组 - 从 0 开始索引

perl - 关于Perl TCP套接字编程的问题

regex - 为什么这个正则表达式很慢?

perl - 是否可以只对 Perl 中的子例程调用进行计时?