IPアドレスからホスト名を取得するサブルーチンです。
GetHostByAddr()
REMOTE_ADDR の内容my $hostname = &GetHostByAddr($ENV{'REMOTE_ADDR'});
環境変数 REMOTE_ADDR の値から、ホスト名を取得します。環境変数 REMOTE_HOST が取得できないサーバ環境でお使いください。$ENV{'REMOTE_ADDR'} の代わりに、IPアドレスをそのまま入れても問題ありません。
たとえば、
my $addr = '64.68.92.1';
my $host = &GetHostByAddr($addr);
すると、$host には、crawl1.googlebot.com が入ります。
sub GetHostByAddr {
my($ip) = @_;
my @addr = split(/\./, $ip);
my $packed_ip = pack("C4", $addr[0], $addr[1], $addr[2], $addr[3]);
my($name) = gethostbyaddr($packed_ip, 2);
return $name;
}