我有一个Perl脚本,它将从命令行和CGI运行.在Perl脚本中,我该如何判断它的运行方式?
解决方法
最好的选择是检查GATEWAY_INTERFACE环境变量.它将包含服务器正在使用的CGI协议的版本,这几乎总是CGI / 1.1. Tony Miller提到的HTTP_HOST变量(或任何HTTP_ *变量)仅在客户端提供时才设置.客户端很少但不是不可能省略未设置HTTP_HOST的Host头.
#!/usr/bin/perl use strict; use warnings; use constant IS_CGI => exists $ENV{'GATEWAY_INTERFACE'};
如果我希望在某些时候在mod_perl下运行,我也会检查MOD_PERL环境变量,因为它将在首次编译脚本时设置.
#!/usr/bin/perl use strict; use warnings; use constant IS_MOD_PERL => exists $ENV{'MOD_PERL'}; use constant IS_CGI => IS_MOD_PERL || exists $ENV{'GATEWAY_INTERFACE'};