Из руководства : объект Net :: IP может быть создан с одного IP-адреса или с префикса бесклассового типа ...
Я думаю, что вы выбралиукажите бесклассовую сеть, при условии, что вы вставите действительный сетевой спецификатор, он работает для меня.
#!/usr/bin/perl -w
use Net::IP;
my $ip = new Net::IP('112.198.64.0/18') or die (Net::IP::Error());
print ("IP : ".$ip->ip()."\n");
print ("Sho : ".$ip->short()."\n");
print ("Bin : ".$ip->binip()."\n");
print ("Int : ".$ip->intip()."\n");
print ("Mask: ".$ip->mask()."\n");
print ("Last: ".$ip->last_ip()."\n");
print ("Len : ".$ip->prefixlen()."\n");
print ("Size: ".$ip->size()."\n");
print ("Type: ".$ip->iptype()."\n");
print ("Rev: ".$ip->reverse_ip()."\n");
выведет:
IP : 112.198.64.0
Sho : 112.198.64
Bin : 01110000110001100100000000000000
Int : 1892040704
Mask: 255.255.192.0
Last: 112.198.127.255
Len : 18
Size: 16384
Type: PUBLIC
Rev: 64.198.112.in-addr.arpa.
Однако, если вы ввели "192.168.65.64 / 255.255.255.248 ", это не формат, принятый Net :: IP, вы должны использовать вместо" 192.68.65.64/29 ", см. эту таблицу .В этом случае он будет работать правильно:
IP : 192.168.65.64
Sho : 192.168.65.64
Bin : 11000000101010000100000101000000
Int : 3232252224
Mask: 255.255.255.248
Last: 192.168.65.71
Len : 29
Size: 8
Type: PRIVATE
Rev: 64.65.168.192.in-addr.arpa.
Когда вы используете формат с полной маской, так как он не распознан, он получает только IP и даст вам маску 255.255.255.255