• ベストアンサー

ホスト名の取得&表示について

ホスト名を取得して、表示させようと思っています。 アクセス者のホスト名(利用しているプロバイダ)を取得して、表示させると例えば「f937sfs.hogehoge.com」と言うようになります。 ドメイン名の前にいろいろと英数時の羅列が付くのですが、これをドメイン名のみ表示させるには、どのようにすれば良いでしょうか。 「f937sfs.hogehoge.com」 と言う表示ではなく、 「hogehoge.com」のみを表示したいと思っています。 御教授をお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

$host="f937sfs.hogehoge.com"; @separate =split(/\./,$host); #ピリオドでわける shift(@separate); #先頭を捨てる $domain = join('.', @separate);#ピリオドでくっつける print "$domain\n";#hogehoge.comになる ホスト名については、取得されているのでそれでいいと思います

Cuty_Cat
質問者

お礼

御回答ありがとうございます。 お手数をおかけして、すみませんでした(ー_ー) 先程記述して頂いたスクリプトを追加結果、見事ドメイン名のみ表示させる事ができました。 とても助かりました。 ありがとうございました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

ピリオドでsplitして最初を除きjoinしてはどうでしょう?

Cuty_Cat
質問者

お礼

御回答ありがとうございます。 大変申し訳ありません。 私はPerlの知識がほとんど皆無なので、基本のホスト名取得と表示くらいしかできません。 No1の回答を見て、自分でいろいろと触ってみましたが、ダメでした。 もし良ければホスト名の取得から表示方法までを、御教授して頂けますでしょうか。 現在はどこかのサイトに記載されていた方法を、そのまま下記のように記述しております。 $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "" || $host eq $addr) { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr; } print "$host\n<br>"; print "$addr\n<br>"; ホスト名とIPアドレスを表示するようにしています。 ホスト名について、質問して頂いているように、ドメイン名のみを表示できるようにしたいと思っています。 お手数をおかけしますが、よろしくお願いします。

noname#25358
noname#25358
回答No.1

 俺が使ってる方法は、まず正規表現でトップレベルドメインを削除して、   $data = s/(com|net|org|co\.jp|ne.jp|...)$//;  次にピリオドで分割された最後の文字列を取り出す方法です。   $data = (split(/\./, $data))[-1];  トップレベルドメインの一覧をズラーッと書かなきゃいけないから面倒ですけど(^^;

Cuty_Cat
質問者

お礼

御回答ありがとうございます。 Perlの知識がほとんど皆無なので、自力でいろいろと試してみましたが、ダメでした。 もし良ければ、ホスト名の取得から表示方法までを御教授して頂けると嬉しく思います。 お手数をおかけしますが、よろしくお願いします。

関連するQ&A

専門家に質問してみよう