首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在...IO/Select.pm第61行不是GLOB引用

在...IO/Select.pm第61行不是GLOB引用
EN

Stack Overflow用户
提问于 2015-11-22 01:07:39
回答 1查看 333关注 0票数 0

我将一个IO::Select对象作为句柄传递给IO::Select::add,并得到以下错误:

代码语言:javascript
复制
Not a GLOB reference at ...IO/Select.pm line 61

这工作了几年,因为几天(几周),人们开始得到错误。通过在线查看,我无法确定我是否使用了错误的调用方式,或者是否最近的perl或DNS::Resolver更新可能是导致问题的原因。

我正在做以下工作

代码语言:javascript
复制
#!/usr/bin/perl

use IO::Select;
use Net::DNS;

# create a resolver object
my $res = Net::DNS::Resolver->new();

# create an IO::Select object
my $sel = IO::Select->new();


# perform the background DNS query
my $sock = $res->bgsend('corti.li');

# adding the socket generates the error
$sel->add($sock);

添加一些调试,我看不出有什么问题:

代码语言:javascript
复制
#!/usr/bin/perl

use Data::Dumper;
use IO::Select;
use Net::DNS;

# create a resolver object
my $res = Net::DNS::Resolver->new();

warn Dumper $res;

# create an IO::Select object
my $sel = IO::Select->new();

warn Dumper $sel;

# perform the background DNS query
my $sock = $res->bgsend('corti.li');

warn Dumper $sock;

# adding the socket generates the error
$sel->add($sock);

产生

代码语言:javascript
复制
$VAR1 = bless( {
                 'force_v4' => 0,
                 'retrans' => 5,
                 'persistent_udp' => 0,
                 'adflag' => 0,
                 'force_v6' => 0,
                 'port' => 53,
                 'answerfrom' => '',
                 'prefer_v6' => 0,
                 'defnames' => 1,
                 'tcp_timeout' => 120,
                 'udp_timeout' => 30,
                 'igntc' => 0,
                 'udppacketsize' => 0,
                 'dnsrch' => 1,
                 'recurse' => 1,
                 'srcaddr' => 0,
                 'persistent_tcp' => 0,
                 'retry' => 4,
                 'cdflag' => 0,
                 'nameserver4' => [
                                    '129.132.98.12'
                                  ],
                 'searchlist' => [
                                   'd.ethz.ch',
                                   'ethz.ch'
                                 ],
                 'tsig_rr' => undef,
                 'nameserver6' => [
                                    '2001:67c:10ec::c'
                                  ],
                 'usevc' => 0,
                 'dnssec' => 0,
                 'debug' => 0,
                 'errorstring' => 'unknown error or no error',
                 'srcport' => 0
               }, 'Net::DNS::Resolver' );
$VAR1 = bless( [
                 undef,
                 0
               ], 'IO::Select' );
$VAR1 = bless( [
                 ',
                 1,
                 undef,
                 undef,
                 undef,
                 [
                   bless( \*Symbol::GEN0, 'IO::Socket::IP' ),
                   1448125508,
                   '129.132.98.12',
                   54103
                 ]
               ], 'IO::Select' );
Not a GLOB reference at /Users/corti/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/darwin-2level/IO/Select.pm line 61.

我使用的是Perl 5.22和Net::DNS 1.03

使用Perl5.18和Net::DNS0.74,代码可以正常工作。

是我做错了什么呢,还是这是个bug?

EN

回答 1

Stack Overflow用户

发布于 2015-11-22 01:20:44

该问题是由Net::DNS::Resolver bgsend的API更改引起的

请参阅#108745: Net::DNS::Resolver bgsend

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33846179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档