IPアドレスの計算 (module)NetAddr-IP

back
http://search.cpan.org/~luismunoz/NetAddr-IP-3.21/
Perl 5.6 以降限定 (5.005x だと動かない)

ま、計算といっても色々あるけど。

use NetAddr::IP;

my $ip = new NetAddr::IP shift;
print "The address is ", $ip->addr, " with mask ", $ip->mask, "\n";

これで、"192.168.1.0" を渡せば
The address is 192.168.1.0 with mask 255.255.255.255

192.168.1.0/24 なら
The address is 192.168.1.0 with mask 255.255.255.0

192.168.1.0/255.255.255.128 なら
The address is 192.168.1.0 with mask 255.255.255.128
# あ" 意味ない

メソッドとしては他に (192.168.1.0/24の場合)
$ip->broadcast    # 192.168.1.255/24
$ip->network      # 192.168.1.0/24
$ip->masklen      # 24
$ip->cidr         # 192.168.1.0/24
$ip->range        # 192.168.1.0 - 192.168.1.255
$ip->first        # 192.168.1.1/24
$ip->last         # 192.168.1.254/24

などなど

また

my $ip = new NetAddr::IP 'xx.xx.xx.xx';
if ($ip->within(new NetAddr::IP 'yy.yy.yy.yy/zz')) {
  print "in\n";
}
else {
  print "out\n";
}
という「ネットワーク内のアドレス?」というメソッドもあり

back