- аналог функции long2ip, butcher, 10:42 , 26-Июл-05 (1)
>На php есть функция long2ip для преобразования десятичного формата IP адреса в >4-х байтный. >Есть ли такая функция на perl? inet_ntoa
- аналог функции long2ip, DenisK, 10:57 , 26-Июл-05 (2)
>>На php есть функция long2ip для преобразования десятичного формата IP адреса в >>4-х байтный. >>Есть ли такая функция на perl? > >inet_ntoa она не пашет ============= #!/usr/bin/perl use Socket; $ip = inet_ntoa (174073896); print $ip; ================ результат: Bad arg length for Socket::inet_ntoa, length is 9, should be 4 at ./bill.pl line 3.
- аналог функции long2ip, Simps, 11:04 , 26-Июл-05 (3)
>>>На php есть функция long2ip для преобразования десятичного формата IP адреса в >>>4-х байтный. >>>Есть ли такая функция на perl? >> >>inet_ntoa > >она не пашет >============= >#!/usr/bin/perl >use Socket; >$ip = inet_ntoa (174073896); >print $ip; >================ >результат: >Bad arg length for Socket::inet_ntoa, length is 9, should be 4 at >./bill.pl line 3. Все работает ... #!/usr/bin/perl use Socket; $ipl = inet_aton("192.168.0.2"); $ip = inet_ntoa ($ipl); print "$ip\n"; - аналог функции long2ip, butcher, 11:07 , 26-Июл-05 (4)
>результат: >Bad arg length for Socket::inet_ntoa, length is 9, should be 4 at >./bill.pl line 3. Используйте функцию pack - аналог функции long2ip, rWizard, 11:10 , 26-Июл-05 (5)
- аналог функции long2ip, chip, 18:41 , 26-Июл-05 (7)
>$ip = inet_ntoa (174073896); $ip = inet_ntoa(pack("L", 174073896));
- аналог функции long2ip, ihor, 11:25 , 26-Июл-05 (6)
sub long2ip { my($num) = @_; my(@res, $n); while (scalar(@res) < 4) { $n = $num % 1000; if ($n < 256) { unshift(@res, $n); $num = $num / 1000; } else { unshift(@res, $num % 100); $num = $num / 100; } # if } # while return \@res; } # sub # ============================================= sub printIP { my($ip) = @_; print(join('.', @{$ip}), "\n"); } # sub # ============================================= # test printIP(long2ip(174073896)); printIP(long2ip(0)); printIP(long2ip(211));
- аналог функции long2ip, Виталий email vp7mail.ru, 16:20 , 23-Янв-07 (8)
Всё просто как 5 копеек:sub ip2long { return unpack("N",inet_aton(shift)); } sub long2ip { return inet_ntoa(pack("N",shift)); } Используется в моих скриптах, проверено на калькуляторе - великолепно работает :) p.s. используется к примеру так: print ip2long("213.18.6.5");
|