【发布时间】:2020-01-09 07:01:50
【问题描述】:
我一直在寻找一种方法来遍历 Ip 范围,我遇到了这个 response
sub inc_ip { $_[0] = pack "N", 1 + unpack "N", $_[0] }
my $start = 1.1.1.1;
my $end = 1.10.20.30;
for ( $ip = $start; $ip le $end; inc_ip($ip) ) {
printf "%vd\n", $ip;
}
我想知道是否有办法将my $start = "192.168.1.1"; 之类的字符串转换为矢量标志。当我传递一个字符串时,我得到的是一些随机数
【问题讨论】:
-
我不明白这个 "vector flag" 你得到一些 "random numbers" 是什么意思。而且我在您的代码中看不到任何与此描述匹配的内容。从您的问题中不清楚您期望发生什么以及您会得到什么。
-
我不知道你想要什么“矢量标志”。请展示您期望该程序产生什么。
-
没有“转换为矢量标志”。这个“矢量标志”是
printf的修饰符(“标志”),用于以特定方式打印给定值。我仍然不知道你希望你的程序产生什么。 -
Socket::inet_aton("1.2.3.4")为您提供二进制表示 - 这可能是您想要的(不要忘记use Socket;)。 -
您的代码有点棘手,因为您的
$start和$end变量是版本字符串,它们在 perl 中带有一些魔力...
标签: perl