PerlでIPアドレスからホスト名をLookupするベターな方法。
gethostbyaddr()
は使いにくいしどうもIPv6対応が怪しい。
IO::Socket::IPはそろそろ標準モジュールに入るらしいが、それは普及にはもうちょっとかかるってことでもある。オーバースペックな気もする。
ということで、普通にSocket.pm使ってみる。
use Socket qw(getaddrinfo getnameinfo); sub addr_to_hostname { my $addr = shift; my ($err1, @result) = getaddrinfo($addr); die $err1 if $err1; my ($err2, $hostname) = getnameinfo($result[0]{addr}); die $err2 if $err2; return $hostname; } print addr_to_hostname('127.0.0.1'), $/; print addr_to_hostname('2001:4860:4860::8888'), $/; # Googleのアレ
んー、これはこれで微妙か。