使用Net :: IP的下一个块的第一个IP

时间:2018-09-04 20:57:43

标签: perl network-programming

我正在尝试使用cpan的Net :: IP模块

my $block = new Net::IP('194.158.1.0/24');
$block->ip() # get the first ip on the block
$block->last_ip() #get the last ip on the block

我想知道下一个块的第一个IP,如何增加最后一个IP?

我尝试过类似的事情:

++$block->last_ip()

但这不起作用吗?

1 个答案:

答案 0 :(得分:3)

您不能按照Net::IP document中所述增加最后一个IP。

  

到达范围的最后一个地址时,++运算符将返回undef。

最简单的方法是将最后一个ip转换为整数,然后递增,然后从中创建一个全新的Net :: IP对象。

#!/usr/bin/perl
use strict;
use warnings;
use Net::IP qw(ip_inttobin ip_bintoip);

my $block = Net::IP->new('194.158.1.0/24');
my $next_bin = ip_inttobin($block->last_int + 1, $block->version);
my $next = Net::IP->new(ip_bintoip($next_bin, $block->version));
print $next->ip;