有没有好的方法来检测 Perl 脚本是从终端/DOS 调用还是从 Web 服务器调用。
我目前有这个代码:
sub cli {
# return 1 if called from browser, 0 if called from command line
if (defined $ENV{GATEWAY_INTERFACE} || exists $ENV{HTTP_HOST}){
return 0;
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)
但请注意,并非所有服务器都设置了这些 ENV 变量。
原因是如果脚本从终端运行,我将打印文本/纯格式消息,如果从浏览器运行,我将打印 HTML 格式的消息。
我通常这样做:
if (-t STDIN) {
//This is running from a terminal
}
Run Code Online (Sandbox Code Playgroud)
阅读评论后编辑:我发现另一个问题详细介绍了不同的解决方案:How do I check if a Perl script is running in a Terminal? 。