2013-02-04 72 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的列表,但是其中有幾個失敗了。 –