我正在尝试在winodws上使用Net :: DNS :: Resolver来测试一些不同的DNS服务器。
当我关闭脚本时使用perl脚本中的$resolver=Net::DNS::Resolver->new ()
更改默认dns服务器并再次运行脚本时,$ resolver指向新DNS,
但是当我在循环中使用此my $resolver=Net::DNS::Resolver->new ()
并再次初始化它并更改默认的dns服务器时,$ resolver会保留旧配置。任何想法如何解决这个问题?
值得一提的是我在Windows上使用这个模块
答案 0 :(得分:0)
该模块使用Windows系统调用来获取系统范围的解析程序信息。系统调用(以及包装它的Perl模块)很可能不希望信息在正在运行的脚本的生命周期内发生变化。
在任何情况下,仅仅为了查询不同的服务器而更改系统范围的配置并不是最好的方法。为什么不在每次循环时直接在Net::DNS::Resolver
对象中设置名称服务器?在您的情况下,它类似于$resolver->nameservers([$ns_ip_or_name]);
,它必须比在Windows中更改DNS设置更容易。