perl - 如何使用 Perl 解析 IP 地址和地址范围?

标签 perl ip-address

我有IP列表:

238.51.208.96/28
238.51.209.180-199
238.51.209.100-109
238.51.213.2-254
...

我怎样才能轻松解析它们?我需要范围内的第一个和最后一个 IP。
对于第一行,我可以使用 Net::Netmask CPAN 模块,但是我可以用其他行做什么?

最佳答案

试试 Net::IP模块

如果第二种模式不支持,您可能需要提前对 ips 进行一些更改,例如

238.51.209.180-199


238.51.209.180 - 238.51.209.199

例如,通过使用一些正则表达式,
$range =~ s/^((?:\d+\.){3})(\d+)-(\d+)$/$1$2 - $1$3/gm;

完整脚本:
use warnings;
use strict;
use Net::IP;
my $range = "238.51.209.180-199";
$range =~ s/^((?:\d+\.){3})(\d+)-(\d+)$/$1$2 - $1$3/;
my $ip = new Net::IP ($range) || die;
print $ip->ip (), "\n";
print $ip->last_ip (), "\n";

关于perl - 如何使用 Perl 解析 IP 地址和地址范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2626429/

相关文章:

regex - 使用安全#! $ 正则表达式中的变量?

linux - 从每个起点删除 N 行

perl - 如何在不在命令行调用 perl 的情况下在 Windows 上执行 Perl 程序?

python - 域名上的 IP 地址集群

linux - 如何将端口绑定(bind)到本地主机?

c++ - 通过 C++ 更改我的动态 IP 地址

perl - 使用 perl 将 html 转换为文本

regex - Perl如何将正则表达式传递给我的子例程,如grep

c++ - 如何确定一个字符串是否是 C++ 中的有效 IPv6 地址?

linux - getifaddrs 仅解析来自以太网接口(interface) (eth) 或 wlan 接口(interface)的 IP