开发者

How to detect if web script in Perl is run using ModPerl::Registry (mod_perl handler)?

开发者 https://www.devze.com 2023-01-06 13:18 出处:网络
Is it possible in to detect in web app run under mod_perl if it is run using ModPerl::Registry? I want to write scrip开发者_开发知识库t which would run under ModPerl::Registry (or similar handler), b

Is it possible in to detect in web app run under mod_perl if it is run using ModPerl::Registry?

I want to write scrip开发者_开发知识库t which would run under ModPerl::Registry (or similar handler), but can function also as mod_perl response handler.


ModPerl::Registry does an elaborate dance to isolate your code from everything else in the system, and part of that is compiling it into a package beneath ModPerl::ROOT.

When called in list context with an argument specifying the number of frames to go back, caller returns

#  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); 

where the $subroutine value is a fully-qualified name.

ModPerl::Registry wraps your entire program in a sub named handler in the aforementioned artificial package, so from your main program, use a test similar to

my $name = (caller 0)[3];
if ($name =~ /^ModPerl::ROOT::/) {
  # run using ModPerl::Registry
  ...
}
0

精彩评论

暂无评论...
验证码 换一张
取 消