129.32.0.127.45.2.2129.32.0.265.18.2.4
输出应为0.0.0.0-27.45.2.1,27.45.2.3-65.18.2.3,65.18.2.5-129.32.0.0,129.32.0.3-255.255.255.255
我目前所做的是从输入文件中提取IP并将它们存储到已排序的数组中(升序).
#!/usr/bin/perl -wuse strict; use Sort::Key::IPv4 qw(ipv4sort); my $List = 'C:\Desktop\IPs.txt';my $ipRange;my @ips;my $i = 0;# Get IP Addresses into arrayopen(file,$List);while (<file>) { chomp($_); $ips[$i] = ($_); ++$i;}# Sort IP Addressesmy @sorted = ipv4sort @ips;# Create IP Ranges
我希望CPAN上有一些可以帮助我的东西.我已经看到模块可以确定IP地址是否在一个范围内,但还没有看到任何可以分割范围的模块.
解决方法 我建议全面的Net::CIDR::Set
模块 这段代码似乎提供了您所需要的
use strict;use warnings;use Net::CIDR::Set;open my $fh,'<','C:\Desktop\IPs.txt' or dIE $!;my $range = Net::CIDR::Set->new;while (<$fh>) { chomp; $range->add($_);}$range->invert;print $range->as_string(2);
产量
0.0.0.0-27.45.2.1,129.32.0.3-255.255.255.255总结
以上是内存溢出为你收集整理的Perl:获取不在给定列表中的IP地址范围全部内容,希望文章能够帮你解决Perl:获取不在给定列表中的IP地址范围所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)