spu*_*dly 8 perl command-line cgi environment-variables
我有一个我写的脚本,可以在命令行上使用,也可以作为CGI脚本使用,需要确定脚本的调用方式,这样我就可以为web请求输出内容类型的头文件(也许还有一些反缓存标题也是).我的第一个想法是检查http环境变量是否存在:
my $js = build_javascript();
if ( exists $ENV{HTTP_HOST} ) {
print "Content-type: text/javascript\n\n";
}
print $js;
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
没有办法判断您的脚本是由Web服务器还是从命令行启动.可以在两种情况下设置任何环境变量.例如,我经常直接从命令行运行CGI程序来测试它们.
知道如果你想选择一个要使用的环境变量,它就必须是一个你不会在另一个情况下设置的环境变量,或者你在两个环境中都设置的环境变量,但是给它们赋予不同的值.在这种情况下,请选择您喜欢的任何环境变量.
如果您想要更复杂,可以使用IO :: Interactive之类的东西来确定您是否已连接到终端.如果不是,则is_interactive返回的filehanandle 是一个空文件句柄,输出无处可去:
print { is_interactive() } $http_header;
Run Code Online (Sandbox Code Playgroud)
如果你不喜欢IO :: Interactive的决定,你可以重新实现is_interactive.这是一段很短的代码,更高级的界面非常好.
| 归档时间: |
|
| 查看次数: |
1664 次 |
| 最近记录: |