6

我有一个要在命令行上运行的小型 Perl 程序。我需要require其他人编写的另一个 Perl 脚本(不是模块)。这反过来又require是其他一些脚本。(我对它的工作方式无能为力)。

现在,其中一个脚本包含并包含在其中真的很烦人。我不要那个。每次出现问题时,我的控制台上都会显示15 行,这真的让我很紧张。我试过了use CGI;use CGI::Carp qw(fatalsToBrowser)500 Internal Server Error page

require 'otherscript.pl';
no CGI;
no CGI::Carp;

no CGI;
no CGI::Carp;
require 'otherscript.pl';

卸载它,就像使用文档描述的那样,但它不起作用。

我可以以某种方式操纵符号表或做一些其他的魔法来摆脱它吗?

4

3 回答 3

3

通过将$CGI::Carp::TO_BROWSER变量设置为,0您可以禁止打印 HTML 版本的 die 消息。

于 2012-06-28T13:04:40.900 回答
3

CGI::Carp 包中没有unimport例程,所以no没有效果。import手动撤消例程的相关部分。

词法范围(见警告):

local $main::SIG{__DIE__} = \&CGI::Carp::realdie;

全球范围:

CGI::Carp::set_die_handler(\&CGI::Carp::realdie);
于 2012-06-28T11:35:41.693 回答
2

使用的代码fatalsToBrowser来自哪里?虽然fatalsToBrowser是一个非常有用的开发工具,但它应该只用于开发。在生产环境中,可以说这fatalsToBrowser是一种安全风险,因为它可能会给试图破解您服务器的人提供太多信息。

因此,请务必使用其他人提到的技巧将其关闭。但是您还应该尽一切可能确保更改有问题的代码,使其不会fatalsToBrowser在生产中使用。

于 2012-06-28T13:49:09.150 回答