4

ModPerl :: Registryを使用して実行されている場合、mod_perlで実行されているWebアプリで検出することは可能ですか?

ModPerl :: Registry(または同様のハンドラー)で実行されるスクリプトを作成したいのですが、mod_perl応答ハンドラーとしても機能します。

4

1 に答える 1

4

ModPerl :: Registryは、システム内の他のすべてからコードを分離するために精巧なダンスを行い、その一部は、コードを下のパッケージにコンパイルすることModPerl::ROOTです。

caller戻るフレーム数を指定する引数を指定してリストコンテキストで呼び出されると、

#  0         1          2      3            4
($package, $filename, $line, $subroutine, $hasargs,
#  5          6          7            8       9         10
$wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash)
 = caller($i); 

ここで、$subroutine値は完全修飾名です。

ModPerl :: Registryhandlerは、前述の人工パッケージで指定されたサブでプログラム全体をラップするため、メインプログラムから、次のようなテストを使用します。

my $name = (caller 0)[3];
if ($name =~ /^ModPerl::ROOT::/) {
  # run using ModPerl::Registry
  ...
}
于 2010-07-11T02:40:22.813 に答える