Perlで環境変数を取得する

Perlで環境変数を取得する

PerlPerlで環境変数を取得する

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";
}

最終更新日:

関連記事

人気記事

新着情報