2013-02-04 75 views
-1

可能重复:
Extraction of TLD from urls and sorting domains and subdomains for each TLD file从ptr记录获取TLD?

例如:从PTR记录 45.36.190.206.in-addr.arpa域名指针ir1.fp.vip取yahoo.com。 GQ1。 yahoo.com

我正在使用Net :: Nslookup; nslookup(host =>“206.190.36.45”,type =>“PTR”);它返回ir1.fp.vip.gq1.yahoo.com。

需要从ptr记录中提取“yahoo.com”。

如何使用perl获取?

+0

你的问题就是“如何得到'ir1.fp.vip.gq1.yahoo.com'的顶级域名,即'yahoo.com'?” – ikegami

+0

哎呀,不,它不是。 – ikegami

+0

@ikegami是需要获取顶级域名。 –

回答

0

您的问题只是简单地说:“如何获得ir1.fp.vip.gq1.yahoo.com的TLD,即yahoo.com?”

use Domain::PublicSuffix qw(); 

my $dps = Domain::PublicSuffix->new(); 

my $host = 'ir1.fp.vip.gq1.yahoo.com'; 

$host =~ s/\.\z//; # D::PS doesn't handle "domain.com.". 
my $root = $dps->get_root_domain($host) 
    or die $dps->error(); 

say $root; 

顺便说一下,您可以使用内建/系统调用gethostbyaddr来获取PTR记录。

use Socket qw(inet_aton AF_INET); 
my $host = gethostbyaddr(inet_aton("206.190.36.45"), AF_INET); 
+0

作品。太好了,谢谢! –

+0

在这种情况下,'root'可以解析为原始IP地址,但情况并非总是如此。 – ikegami

+0

是的,我使用了一个if块来处理那些包含500个奇怪IP的列表,但是其中有几个失败了。 –