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

问题描述 投票:1回答:1

我正在尝试使用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()

但这不是任何想法吗?

perl network-programming
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.