【发布时间】:2013-05-06 07:32:35
【问题描述】:
我正在尝试编写一个显示各种服务器的 whois 信息的 Perl 脚本。然而,whois 服务器会在回复中返回所有类型的免责声明和其他文本。 Net::Whois::Raw 确实可以选择去除这些免责声明,但我无法让它发挥作用。
我是这样尝试的:
#!/usr/bin/perl
use strict;
use warnings;
my $OMIT_MSG = 2;
my $CHECK_FAIL = 2;
my $USE_CNAMES = 1;
use Net::Whois::Raw qw(whois $OMIT_MSG $CHECK_FAIL $USE_CNAMES);
die "Incorrect arguments\n" unless (@ARGV);
for (my $i = 0; $i < @ARGV; $i++)
{
print "\nWhois info : " . $ARGV[$i] . "\n\n\n";
eval
{
my $whoisinfo = whois($ARGV[$i]);
print $whoisinfo;
};
if ($@)
{
print "Error while retrieving whois details.";
}
print "\n";
}
如果这可能是一个愚蠢的问题,我很抱歉,但是谁能指出我在这里做错了什么?
提前致谢。
【问题讨论】:
-
“不工作”是什么意思?
-
你从哪里得到
use Net::Whois::Raw qw(whois $OMIT_MSG $CHECK_FAIL $USE_CNAMES);?!在docs 中没有任何类似的东西。 -
“不工作”我的意思是免责声明没有被剥夺。 $OMIT_MSG 在这里:search.cpan.org/~corris/Net-Whois-Raw-0.23/lib/Net/Whois/Raw.pm
-
我必须承认我以前没有见过 perl 模块失败,如果你需要在你的脚本中添加任何东西,那么在你的外部 for 循环中你可能想要把一些正则表达式过滤不需要的行,这表示我非常相信将 unix 工具串在一起(就像设计一样)“请参阅下面的答案”,如果我很想将“whois”的输出提供给 grep,然后进入你的 perlscript 进行显示。
-
附带说明一下,看看 Net::DRI(我是它的开发者),它采用了不同的方法,但其中一部分让您可以访问作为 Perl 对象的 whois 数据。它当然需要针对一堆新 gTLD 进行更新。