既存のperl製CGIをmod_perl環境下で動作させるための注意点

[perlとは?]
説明
  スクリプト言語
メリット
  テキスト形式で記述・実行するので人間の目で見えるからメンテナンスが容易
  文字列処理が得意
デメリット
  実行のたびにコンパイルする必要があるので、他の実行ファイル形式プログラムと比較して低速。


[mod_perlとは?]
説明
  Apache上でPerlの機能を最大化するためのアドイン機能。
メリット
  上記のデメリットを解消する(最初の1回目だけコンパイルし、メモリに常駐させる)ことで、オーバーヘッドを無くし高速化する
デメリット
  メモリ消費が大きい
  メモリに常駐させるので、メモリリークを起こすようなプログラムを設定してはいけない


注意点
グローバル変数に注意が必要
問題点
  最初の起動後にメモリへキャッシュされるので、グローバル変数を無為に利用すると危険
解決策
  そもそもグローバル変数を利用しない
  正しく初期化をおこなう


モジュールやライブラリファイルの更新
問題点
  モジュールやライブラリファイルを更新しても反映されない
解決策
  Apacheの再起動が必要


通常のexit()は使用できない
解決策
  以下の判定により、exit関数を他の関数でオーバーライトさせる必要がある。

 use subs qw(exit);
 *exit = $ENV{MOD_PERL} ? \&Apache::exit : sub { CORE::exit };

備考
  今回これだけ書きましたが、メインはこのexitでした。


参考URI
http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl.html