Perl:获取不在给定列表中的IP地址范围

Perl:获取不在给定列表中的IP地址范围,第1张

概述我正在尝试根据包含一系列IP地址的文件创建IP地址范围.我正在尝试创建的范围是那些不在文件中的范围.例如,如果我有以下IP地址: 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地址的文件创建IP地址范围.我正在尝试创建的范围是那些不在文件中的范围.例如,如果我有以下IP地址:

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地址范围所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1260550.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存