我有一个小的Perl程序,我想在命令行上运行。我需要require
其他人编写的另一个Perl脚本(不是模块)。反过来,require
一些其他脚本。 (我对这种方式无法做任何事情)。
现在,其中一个脚本中包含use CGI;
和use CGI::Carp qw(fatalsToBrowser)
非常烦人。我不要那个。每次出现故障时,我的控制台上都有15行500 Internal Server Error page
,这让我很紧张。我试过了
require 'otherscript.pl';
no CGI;
no CGI::Carp;
和
no CGI;
no CGI::Carp;
require 'otherscript.pl';
卸载它,就像use doc描述的那样,但它不起作用。
我可以以某种方式操纵符号表或做一些其他魔法来摆脱它吗?
答案 0 :(得分:3)
CGI :: Carp包中没有unimport
例程,因此no
无效。手动撤消import
例程的相关部分。
词汇范围(见caveat):
local $main::SIG{__DIE__} = \&CGI::Carp::realdie;
全球范围:
CGI::Carp::set_die_handler(\&CGI::Carp::realdie);
答案 1 :(得分:3)
通过将$CGI::Carp::TO_BROWSER
变量设置为0
,您可以禁止打印骰子消息的HTML版本。
答案 2 :(得分:2)
使用fatalsToBrowser
的代码来自哪里?虽然fatalsToBrowser
是一个非常有用的开发工具,但它只应该用于开发。在生产环境中,可以认为fatalsToBrowser
存在安全风险,因为它可能会给试图破解服务器的人提供太多信息。
所以,一定要使用其他人提到的技巧来关闭它。但您也应该尽一切可能确保更改违规代码,以便在生产中不使用fatalsToBrowser
。