基于字符串的Perl数组过滤

基于字符串的Perl数组过滤,perl,dns,Perl,Dns,我正在尝试筛选一个数组,该数组在基于BIND9的DNS服务器上获取大量有关DNS记录的信息。输出如下所示: print Dumper(@host_objs); 输出: $VAR1 = bless( { 'internal_updates_view' => bless( { 'use_nxdomain_redirect_Addresses' => 0, 'match_destinations' => [], 'zone' => test.tld, 'name' =>

我正在尝试筛选一个数组,该数组在基于BIND9的DNS服务器上获取大量有关DNS记录的信息。输出如下所示:

print Dumper(@host_objs);
输出:

$VAR1 = bless( {
'internal_updates_view' => bless( {
'use_nxdomain_redirect_Addresses' => 0,
'match_destinations' => [],
'zone' => test.tld,
'name' => test.test.tld,
*etcetera*

如何制作
打印转储程序(@host_objs)
仅包含“name”的行?

如果所有
@host\u objs
都是同一类的实例对象,则可以调用
name
方法:

foreach my $obj(@host_objs) {
   print $obj->{internal_updates_view}->{name}, "\n";
}

在cpan上找不到它,数组中的所有位置都由$VAR1、$VAR2等标记。我认为它们不是同一类的所有实例。至少,该解决方案对我不起作用。您可以使用以下命令打印$obj的类名:print ref($obj),“\n”。此外,在打印转储程序时,请使用以下引用:打印转储程序(\@host\u objs),“\n”;我已经更新了我的answerperl 5.10,后来有了有用的函数
say
,它可以打印出内容并向其中添加回车符。您可以通过放置
使用功能“:5.10”
使用功能“say”
来启用。然后你可以做
说Dumper(\@host\u objs)。您没有使用
名称
方法。您通过抓取对象的
{name}
键来访问对象的内部。等等是有趣的部分。请出示大约一百行。没有什么会爆炸。