Поиск по этому блогу

суббота, 30 октября 2010 г.

perl ip2long long2ip

Часто приходится гуглить, теперь знаю где смотреть))))


#!/usr/bin/perl

use warnings;
use strict;
use Socket;

if ($ARGV[0] =~ /\d+\.\d+\.\d+\.\d+/) {
my $ip_address = shift(@ARGV);
my $ip_number = ip2long($ip_address);
print "$ip_address converts to $ip_number\n";
} else {
my $ip_number = shift(@ARGV);
my $ip = long2ip($ip_number);
print "$ip_number converts to $ip\n";
}

sub ip2long {
return unpack("l*", pack("l*", unpack("N*", inet_aton(shift))));
}

sub long2ip {
return inet_ntoa(pack("N*", shift));
}

1 комментарий:

  1. Только в pack нужно l* заменить на u*, иначе на некоторые айпишники значения будут минусовые, что некорректно.

    ОтветитьУдалить