mod_perl でも import は呼ばれる

mod_perl では,一度コンパイルされたモジュールはキャッシュされてそのまま使われます。

package ModuleA;

print STDERR "ModuleA::RUN\n";

なる ModulaA があり,スクリプト側で,

use ModuleA;

としても,コンパイルされるとき一度だけ「RUN」とログに吐きますが,リロードしても(基本的には)「RUN」とは出てきません。

ところが,import というサブルーチン(perldoc -f import や perldoc -f use 参照)を定義すると,これは,use する度に呼ばれるんで,mod_perl 環境でもリクエストがあるたびに自動的に呼び出されます。

ただし,たとえば,ModuleB が use ModuleA; してて,ModuleC も use ModuleA; してるときに,メインのスクリプト

use ModuleB;
use ModuleC;

とすると2度呼び出されます。つまり,use されるところでは必ず呼び出されるわけです。

あたりまえといえばあたりまえなのですが変な実験でした。