Kawa.netブログ(川崎有亮)

アクセスカウンタ

help リーダーに追加 RSS PerlでDNS正引きするワンライナー

<<   作成日時 : 2008/09/22 15:52   >>

トラックバック 0 / コメント 4

IO::Socket::INETモジュールのドキュメントによれば、接続先サーバを
IPアドレスでなくて、ホスト名でも指定できるハズだけど、なぜかできなかった。
        PeerAddr  Remote host address     <hostname>[:<port>]
        PeerHost  Synonym for PeerAddr
        PeerPort  Remote port or service    <service>[(<no>)] | <no>
何でだろう?
モジュールのソースまでたどる時間はなし。

ホスト名からIPアドレスを取り出す手順:
my $addr = join(".",unpack C4=>(gethostbyname $name)[4]);
Perl 標準関数だけなので、追加モジュール不要で使える。
PeerAddr に IP アドレスを指定すると、繋がるようになった。

ちなみに、ワンライナーで書いてみると、↓になる。
perl -e 'print join(".",unpack C4=>(gethostbyname shift)[4]), "\n"' www.yahoo.co.jp
引数にホスト名を指定する。

設定テーマ

関連テーマ 一覧

月別リンク

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(4件)

内 容 ニックネーム/日時
試してみましたけどできましたよ。
perl v5.10.0
BLUEPIXY
2008/09/22 20:39
モジュールのバージョンは
$VERSION = "1.31";
BLUEPIXY
2008/09/25 02:57
my $addr = join(".",unpack C4=>(gethostbyname $name)[4];
のところ、最後の)が抜けてまっせ。
泥山田
2008/11/14 23:10
> BLUEPIXYさん
何ででしょうね、手元の Debian の DNS 設定が調子悪かったのかも?

> 泥山田さん
ご指摘ありがとうございますッ。修正しました。
ゆうすけ
2008/11/16 01:54

コメントする help

ニックネーム
本 文

EDGE Now!