В коде RXL заметил такой баг, как его объяснить ( и как подправить код), прошу подсказать, кто знает
#!/usr/bin/perl -W
sub ip_to_n($)
{
my ($ip_s) = @_;
my $ip_n = 0;
for my $part (split(/\./, $ip_s))
{
$ip_n <<= 8;
$ip_n += $part;
}
return $ip_n;
}
sub n_to_ip($)
{
my ($ip_n) = @_;
return (($ip_n >> 24) & 0xff) . '.' . (($ip_n >> 16) & 0xff) . '.' . (($ip_n >> 8) & 0xff) . '.' . ($ip_n & 0xff);
}
sub get_rand_ip($$)
{
my ($ip_from, $ip_to) = @_;
my $ip_n;
$ip_from = ip_to_n($ip_from);
$ip_to = ip_to_n($ip_to);
$ip_n = rand($ip_to - $ip_from + 1) + $ip_from;
return n_to_ip($ip_n);
}
$k = 1;
while ($k<100) {
my $ip = get_rand_ip('109.106.204.100' , '109.106.205.255');
print "$ip\n";
++$k;
}
Вот результат работы скрипта
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.
C:\Documents and Settings\Саша>cd Рабочий стол
C:\Documents and Settings\Саша\Рабочий стол>t.pl
109.106.204.212
109.106.204.166
109.106.204.184
109.106.204.196
109.106.204.230
109.106.204.147
109.106.205.26
109.106.204.175
109.106.205.85
109.106.205.94
109.106.204.123
109.106.204.126
109.106.205.170
109.106.205.4
109.106.205.123
109.106.205.185
109.106.204.119
109.106.205.137
109.106.204.205
109.106.204.102
109.106.204.145
109.106.205.152
109.106.205.18
109.106.205.152
109.106.205.206
109.106.204.198
C:\Documents and Settings\Саша\Рабочий стол>
Т.е., айпишник 109.106.205.4 никак не входит в диапазон, который был задан