Perlで環境変数を取得する
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2008-11-28
Perl で Web サービスをしていると、リモートの IP アドレスなど http のリクエスト情報を取得したい場合があります。Java の Servlet なら HttpServletRequest、PHP なら $_SERVER 環境変数で受け取れるものです。
調べてみると、当然 Perl にも用意されているようで、$ENV 連想配列に情報が入ってきます。主に使われそうなものを 4 つくらいピックアップしたので備忘録程度にまとめておきます。
# リモートIPアドレス
$ENV{'REMOTE_ADDR'} : xxx.xxx.xxx.xxx
# リクエストメソッド
$ENV{'REQUEST_METHOD'} : GET
# リクエストURL
$ENV{'REQUEST_URI'} : saratoga.cgi
# リクエストプロトコル
$ENV{'SERVER_PROTOCOL'} : HTTP/1.1
$ENV は連想配列なので、キーをループさせていけば、取得可能な情報が一覧表示できます。テストや調査などで、詳細なログが欲しい場合はファイルに出力しておくと便利かもしれません。Apache などのアクセスログが見れる環境ならそっちを使えばいいのかもしれませんが、結局は整理しないとログって追いかけにくいですからね・・・。
ちなみに、リファラーがない場合は、$ENV に HTTP_REFERER の項目自体が入ってこないのでしょうか?後で確認しておかなければ・・・。環境変数の中身を表示するソースだけ書いておきます。
foreach(sort(keys %ENV)) {
print "<p>$_ = $ENV{$_}</p>\n";
}
関連記事
上記の記事に関連する記事(最新の10件)です。


