如果在FCGI或CGI下调用它,如何检测内部Perl脚本。我想检测是否在FCGI下运行然后加载FCGI模块,类似这样在脚本的顶部:
if ($ENV{FCGI}) {
use FCGI;
use MyFCGIHandler;
}
我知道我可以这样做:
use FCGI;
my $request = FCGI::Request();
#Returns whether or not the program was run as a FastCGI.
$isfcgi = $req->IsFastCGI();
但这意味着我必须加载FCGI模块并调用其Request和isFastCGI方法来检查如果应用程序未在FCGI下运行,哪个不好。
答案 0 :(得分:1)
在PerlMonks找到了这个:
#!/usr/bin/perl
use strict;
use warnings;
use CGI::Fast qw(:standard);
sub mode
{
my $h=$CGI::Fast::Ext_Request;
if (defined($h) && ref($h) && $h->IsFastCGI()) {
return 'FastCGI';
} else {
return 'CGI';
}
}
while (CGI::Fast->new()) {
print
header(),
start_html('CGI or FastCGI?'),
h1('CGI or FastCGI?'),
p('This application runs in ',mode(),' mode.'),
end_html();
}