use NetAddr::IP;
my $ip = new NetAddr::IP '127.0.0.1';
####
use NetAddr::IP;
my $loopback = new NetAddr::IP '127.0.0.1', '255.0.0.0';
my $rfc1918 = new NetAddr::IP '10.0.0.0/8';
my $another = new NetAddr::IP '1.2.0.0/255.255.0.0';
my $loopback2 = new NetAddr::IP 'loopback';
##
##
use NetAddr::IP;
my $ip = new NetAddr::IP('10.0.0.0/30');
while ($ip < $ip->broadcast) {
print "ip = $ip\n";
$ip ++;
}
##
##
ip = 10.0.0.0/30
ip = 10.0.0.1/30
ip = 10.0.0.2/30
##
##
use NetAddr::IP;
my $ip = new NetAddr::IP('10.0.0.0/30');
print join(' ', @$ip), "\n";
##
##
10.0.0.1/32 10.0.0.2/32
##
##
use NetAddr::IP;
push @addresses, NetAddr::IP->new($_) for <DATA>;
print join(", ", NetAddr::IP::compact(@addresses)), "\n";
__DATA__
10.0.0.0/18
10.0.64.0/18
10.0.192.0/18
10.0.160.0/19
##
##
use NetAddr::IP;
print "My address space contains the following /24s:\n",
join("\n", NetAddr::IP->new('10.0.0.0/22')->split(24)), "\n";
##
##
use NetAddr::IP;
print join(' ', NetAddr::IP->new('10.0.0.0/25')->wildcard());
##
##
use NetAddr::IP;
my $space = new NetAddr::IP->new('10.128.0.0/17');
for my $ip (map { new NetAddr::IP->new($_) } <DATA>)
{
print $ip, "\n"
if $space->contains($ip);
}
__DATA__
172.16.1.1
172.16.1.5
172.16.1.11
172.16.1.10
172.16.1.9
172.16.1.3
172.16.1.2
172.16.1.7
172.16.1.4
172.16.1.1
10.128.0.1
10.128.0.12
10.128.0.13
10.128.0.41
10.128.0.17
10.128.0.19
##
##
use NetAddr::IP;
push @space, new NetAddr::IP->new($_) for <DATA>;
for my $netblock (NetAddr::IP::compact @space)
{
for (my $ip = $netblock->first;
$ip <= $netblock->last;
$ip++)
{
# Do something with $ip
}
}
__DATA__
10.0.0.0/16
172.16.0.0/24
##
##
use NetAddr::IP;
push @space, new NetAddr::IP->new($_) for <DATA>;
for my $ip (map { $_->hostenum } NetAddr::IP::compact @space)
{
# Do something with $ip
}
__DATA__
10.0.0.0/16
172.16.0.0/24
##
##
use NetAddr::IP;
my $hosts = 0;
push @space, new NetAddr::IP->new($_) for <DATA>;
$hosts += $_->num for @space;
print "You have $hosts\n";
__DATA__
10.0.0.0/16
172.16.0.0/24