Perl:将IP地址拆分为hostid和netid

时间:2014-11-21 13:28:08

标签: perl networking ip subnet netmask

很简单,我想将给定的IP地址拆分为netid(由网络掩码定义)和perl中的hostid。例如:

    $network = NetAddr::IP->new('192.168.255.255/29') || die "invalid space $_";

现在$network->mask会返回255.255.255.248。但NetAddr::IP中没有任何方法可以应用掩码将地址拆分为/29空间中的netid和hostid部分。

NetAddr::IP::Util提到操作员这样做,但它的文档很乱。

至少可以使用Net::NetMask提取netid:

    $netid = Net::Netmask->new('192.168.255.255/29')->base;

这会产生192.168.255.248。同样,没有方法来获取主机部分0.0.0.7。也许最好的方法是将IP打包/解压缩为32位int,然后简单地将它们&输出。那么打印IP地址的二进制表示也会更容易,我发现这对于调试和文档化目的非常有帮助。

1 个答案:

答案 0 :(得分:0)

使用hostmask()方法

$host_wildcard = Net::Netmask->new('192.168.255.255/29')->hostmask;