Как я могу проверить, находятся ли IP-номера в одной подсети с Perl? - PullRequest
2 голосов
/ 07 июня 2009

Как я могу проверить, находятся ли IP-номера в одной подсети с Perl? Я использую NetAddr :: IP ?

Спасибо.

Ответы [ 2 ]

9 голосов
/ 08 июня 2009

Вы можете попробовать это:

#!/usr/bin/perl

use warnings;
use strict;
use NetAddr::IP;

my $first  = NetAddr::IP->new('10.0.0.1/24');
my $second = NetAddr::IP->new('10.0.0.5/32');

if ($second->within($first)) {
    printf "%s is within %s\n", $second, $first;
} else {
    printf "%s is not within %s\n", $second, $first;
}
5 голосов
/ 07 июня 2009

Похоже, что модуль Net :: Subnets Perl сделает это. Вот пример по той ссылке, которую я дал. Если вы не хотите использовать CPAN для получения модуля, и Debian, и Ubuntu имеют пакет libnet-subnets-perl.

...