Perl 启用全局警告

Perl 启用全局警告,perl,debugging,cgi,warnings,Perl,Debugging,Cgi,Warnings,我必须优化用Perl编写的intranet(大约3000个文件)。我要做的第一件事是启用警告“-w”或“使用警告;”,这样我就可以消除所有这些错误,然后尝试实现“使用严格;” 有没有一种方法可以告诉Perl始终使用警告(如php的php.ini中的设置),而不需要修改每个脚本以将“-w”添加到第一行 我甚至想为/usr/bin/perl创建一个别名,或者将其移动到另一个名称并生成一个简单的脚本,而不是仅仅添加-w标志(像代理) 如何调试它?您可以通过将-Mwarnings-Mstrict添加到P

我必须优化用Perl编写的intranet(大约3000个文件)。我要做的第一件事是启用警告“
-w
”或“
使用警告;
”,这样我就可以消除所有这些错误,然后尝试实现“
使用严格;

有没有一种方法可以告诉Perl始终使用警告(如php的
php.ini
中的设置),而不需要修改每个脚本以将“-w”添加到第一行

我甚至想为
/usr/bin/perl
创建一个别名,或者将其移动到另一个名称并生成一个简单的脚本,而不是仅仅添加
-w
标志(像代理)


如何调试它?

您可以通过将
-Mwarnings-Mstrict
添加到
PERL5OPT
环境变量中,为所有Perl脚本设置警告和限制。有关详细信息,请参阅。

您可以将PERL5OPT环境变量设置为保持
-w
。有关详细信息,请参阅。我希望你也会考虑污染,比如<代码> -t>代码>或者可能是<代码> -t>代码>,用于安全跟踪。< /P> 但我并不羡慕你。在不使用
使用警告
使用严格
的情况下,改装开发的代码通常是皇家PITA


我有一个很好的例子,我用它来启动新的Perl程序。但我还没有考虑过CGI程序,这可能会从对锅炉板的一些调整中受益。

改装警告和严格是很困难的。我不建议采用大爆炸的方法,对每件事都设置警告(更不用说限制)。你将被淹没在警告中,到了无用的地步

首先在脚本使用的模块上启用警告(有一些,不是吗?),而不是对所有模块都应用警告。把核心清理干净,然后在外围工作,一次一个单元。因此,事实上,我建议使用一个简单的(Perl)脚本,该脚本只查找一行,该行不以哈希开头,并添加
use警告
(也可以使用strict;,因为您一次要处理一个脚本),所以您可以一次一个脚本进行更新

换言之,当您要更新每个文件时,您最好实际编辑它

我只会使用总括选项对问题的范围做一个简单的评估:这是一场彻底的灾难,还是仅仅是几个文件中的一些小过失。不幸的是,如果代码是在没有警告和严格要求的情况下开发的,那么它更可能是“灾难”而不是“最小”


您可能会发现您的前辈很容易复制和粘贴,一些错误的习惯用法会在复制的代码中反复出现。编写一个Perl脚本来修复每个问题。在我个人的
bin
目录中,我有一堆
fix*
脚本,它们处理各种变化——要么修复顽固不化(或者更常见地说,是久违的)同事造成的问题,要么适应我自己不断变化的标准。

I allready修复了模块,我有一个(cgilib.pl),每个脚本都使用,另外8个是由不同的脚本使用的。现在我必须潜入脚本池中,将它们修复到。我做了另一件事,我让cgilib.pl记录了正在访问它的脚本的每一条路径(使用$0),到目前为止,只有273个脚本经常被使用,所以我将从它们开始,我有一种感觉,大约70%的脚本是旧的,根本没有使用过,如果它们不在日志中注册的话,我将把它们复制到备份服务器上,然后从生产服务器上删除。@radu:这听起来很典型-一个经典的80:20规则(虽然在本例中更接近90:10),其中20%的脚本完成了大部分工作,其余的大部分被遗忘或很少使用。记录正在使用的脚本是非常明智的——它告诉您在哪里集中精力。即使在273中,也可能会有20-50个被大量使用,而其余的被较少使用。祝你好运很难接受一个三个都有帮助的答案@tchrist和@Michael Carman给了我一个答案,回答了我一开始想要的问题,但是@Jonathan Leffler给出了一个很好的建议“不要那样做”(并对我的第二个问题给出了很好的解释:你将如何调试它?),如果我接受@Jonathan Leffler的答案,我希望没有人会感到不安。谢谢大家的帮助。我现在测试了PERL5OPT方法,maibe我不理解文档,但是我在终端“export PERL5OPT=w”中运行了一个export命令,之后我在终端会话中运行的每个脚本都应该受益于-w开关(可以工作),但是当我从apache加载脚本时,它没有效果,对于apache,有一种方法可以做到这一点,在httpd.conf或任何地方进行一些设置?