Часто приходится гуглить, теперь знаю где смотреть))))
#!/usr/bin/perl
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));
}
Только в pack нужно l* заменить на u*, иначе на некоторые айпишники значения будут минусовые, что некорректно.
ОтветитьУдалить