use utf8;
use strict;
use warnings;
use NetAddr::IP;
use Net::Netmask;
my $block = new Net::Netmask ('192.168.56.1/27');
print "block:$block"."\n";
#ネットワークアドレス
print "base:".$block->base()."\n";
#サブネットマスク
print "mask:".$block->mask()."\n";
#ホストマスク
print "hostmask:".$block->hostmask()."\n";
#ビットの数
print "bits:".$block->bits()."\n";
#サイズ取得
print "size:".$block->size()."\n";
print "maxblock:".$block->maxblock()."\n";
#ブロードキャストアドレス
print "broadcast:".$block->broadcast()."\n";
print "next:".$block->next()."\n";
print "first:".$block->first()."\n";
#IPアドレスの範囲を取得 ネットワークアドレス、ブロードキャストアドレス含む
for my $ip ($block->enumerate) {
print "$ip\n";
}
実行結果
block:192.168.56.0/27 base:192.168.56.0 mask:255.255.255.224 hostmask:0.0.0.31 bits:27 size:32 maxblock:21 broadcast:192.168.56.31 next:192.168.56.32 first:192.168.56.0 192.168.56.0 192.168.56.1 192.168.56.2 192.168.56.3 192.168.56.4 192.168.56.5 192.168.56.6 192.168.56.7 192.168.56.8 192.168.56.9 192.168.56.10 192.168.56.11 192.168.56.12 192.168.56.13 192.168.56.14 192.168.56.15 192.168.56.16 192.168.56.17 192.168.56.18 192.168.56.19 192.168.56.20 192.168.56.21 192.168.56.22 192.168.56.23 192.168.56.24 192.168.56.25 192.168.56.26 192.168.56.27 192.168.56.28 192.168.56.29 192.168.56.30 192.168.56.31