Как отсортировать список IP-адресов и вычислить класс и маску сети для каждого?
У меня есть 2 варианта. Во-первых, у меня есть массив, который имеет список IP-адресов. Например
my @Ip=(); # array that has the IPs below in it
Пример ввода:
108.0.0.30 108.0.0.30 108.0.0.30 192.168.1.1 192.168.1.2 10.0.0.1
Мне нужна программа, которая может отсортировать такой массив и сказать, какой это класс сети и маска подсети. Например, вывод должен быть как
10.1.1.1/25 10.1.1.1 - это ip, а 25 - подмаска
1 ответ
Net::IP
, Net::IP::Resolver
, Net::IP::Match::Regexp
и другие субмодули от Net::IP
Вы делаете это хорошо для вас. Просто часть с сортировкой сложна. Но если вы гуглите, вы найдете несколько хороших методов. Например:
my @ips = qw(
172.27.32.200
172.19.32.100
10.1.1.60
192.20.30.133
);
@ips = map {s/\s+//g; $_} sort map {s/(\d+)/sprintf "%3s", $1/eg; $_} @ips;
print join "\n", @ips;