Получение TLD из записи ptr?

Возможный дубликат:
Извлечение TLD из URL-адресов и сортировка доменов и поддоменов для каждого файла TLD

Например: выборка yahoo.com из записи PTR 45.36.190.206.in-addr.arpa, указатель доменного имени ir1.fp.vip.gq1.yahoo.com.

Я использую Net::Nslookup; nslookup(host => "206.190.36.45", type => "PTR"); который возвращает ir1.fp.vip.gq1.yahoo.com.

Нужно выбрать только "yahoo.com" из записи ptr.

Как получить это с помощью Perl?

1 ответ

Решение

Является ли ваш вопрос просто "Как получить TLD ir1.fp.vip.gq1.yahoo.comа именно 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);
Другие вопросы по тегам