Info

Perlの gethostbyaddr は遅くて使い物にならない!2000個ぐらいのIPアドレスをホスト名変換するのに5時間以上もかかる。はじめはネットワークか、DNSサーバーのせいかと思ったが、nslookup で試したところ gethostbyaddr よりずっと早かった。ということはやっぱり gethostbyaddr の問題と推定できる。自力でnslookupの情報からホスト名を取り出すのもよいだが、CPANのライブラリを使うとずっと簡単だと思う。

1.ライブラリダウンロード
http://search.cpan.org/~olaf/Net-DNS-0.63/lib/Net/DNS.pmから Net-DNS-0.63.tar.gz ダウンロード。

2.インストール
インストールというよりは設置ですね。Perlのライブラリパスにダウンロードしたものをコピーする。

3.コード

#!/usr/bin/env perl
use strict;
use Net::DNS;
use vars qw/ $myRes $query $rr $host /;

$myRes = Net::DNS::Resolver->new;

sub myLookup($){
    $query = $myRes->search($_[0], 'PTR');
    if (!$query) {
        return "?";
    }
    foreach $rr ($query->answer) {
        if ($rr->type eq "PTR") {
            return $rr->ptrdname;
        }
    }
}

$host = &myLookup("72.14.207.99");
print $host;

5時間もかかる処理が30分以内で終わった。興奮!興奮!

Comments

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Basic HTML is allowed. Your email address will not be published.

Subscribe to this comment feed via RSS