Используйте whois, чтобы получить страну по IP-адресу в Perl

как я могу получить страну по IP-адресу в Perl? Я должен использовать whois, чтобы сделать это. Я знаю, что для взятия страны я могу использовать:

$test = `whois $ip |grep -i country`;

Но он возвращает мне "Country: DE". Мне нужен только ДЭ.


person Mateusz    schedule 30.03.2015    source источник
comment
Страна, которую вы видите, не обязательно является страной по IP-адресу. Вы должны изучить что-то вроде search.cpan.org /~maxmind/Geo-IP-1.45/lib/Geo/IP.pm.   -  person bzlm    schedule 30.03.2015
comment
Но мне пришлось использовать whois :P В школе моя задача - использовать whois и получить от этого страну.   -  person Mateusz    schedule 30.03.2015
comment
Не бегите для этого в оболочку, у вас есть много библиотек whois в Perl.   -  person Patrick Mevzek    schedule 02.01.2018


Ответы (2)


my $country = `whois $ip | grep -Po '^Country:\s*\K.*';
chomp($country);

Но поскольку «P» в -P означает «Perl», мы могли бы также избавиться от grep.

my $whois = `whois $ip`;
my ($country) = $whois =~ /^Country:\s*(.*)/m;
person ikegami    schedule 30.03.2015

Я сделал это немного нубским способом, но это работает xd

$test = `whois $_ |grep -i country`;
$rid = rindex($test, ":");
$b = substr("$test, $rid+1);

А теперь у меня только "DE", "BR", "CN", "MX" и т.д :)

person Mateusz    schedule 30.03.2015