Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Perl解析IP地址和地址范围?_Perl_Ip Address - Fatal编程技术网

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

如何使用Perl解析IP地址和地址范围?,perl,ip-address,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模块,但是对于其他行,我可以做什么呢?试试模块 如果第二种模式不支持,您可能需要对IP进行一些更改,例如 238.51.209.180-199 到 例如,通过使用一些正则表达式 $range =~ s/^((?:\d+

我有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模块,但是对于其他行,我可以做什么呢?

试试模块

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

238.51.209.180-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";

您可以使用包匹配IP地址,并使用CPAN上的任意数量的模块操作它们(并获取网络掩码等),包括和。

my$IP=new Net::IP(“238.51.209.180-199”)|die输出在./andrey-zentavr.pl第5行。
谢谢。我也添加了/gm,我认为它需要多行标记,我不希望我的脚本死掉。如果Net::IP($range)失败,我需要重新生成字符串以清除格式。然后只需更改脚本即可。这只是一个例子。我决定像这样使用smt:#检查,我们有什么范围格式?如果($ipline=~/^((?:\d+\){3})(\d+)-(\d+)$/){$ipline=~s/^((?:\d+\){3})(\d+)-(\d+)$/$1$2-$1$3/;}
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";