IPアドレスからホスト名を取得する

IPアドレスからホスト名を取得するサブルーチンです。

サブルーチン名

GetHostByAddr()

引数

  1. 環境変数 REMOTE_ADDR の内容

戻値(配列)

  1. ホスト名

使い方

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;
}