启用全局警告

时间:2011-01-18 13:59:02

标签: perl debugging cgi warnings

我必须优化用Perl编写的Intranet(大约3000个文件)。我要做的第一件事是启用警告“-w”或“use warnings;”,这样我就可以摆脱所有这些错误,然后尝试实施“use strict;”。

有没有办法告诉Perl一直使用警告(比如PHP php.ini中的设置),而无需修改每个脚本以将“-w”添加到它的第一行?

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

你会如何调试它?

3 个答案:

答案 0 :(得分:12)

嗯...

可以将PERL5OPT设置为保持-w。有关详细信息,请参阅perlrun manpage。我希望您也会考虑使用-T-t进行安全跟踪。

但我不羡慕你。在没有use warningsuse strict的情况下开发的改造代码通常是皇家PITA。

我有一些standard boiler-plate用于启动新的Perl程序。但是我没有考虑过一个CGI程序,这可能会受益于对该锅炉板的一些调整。

答案 1 :(得分:9)

改进警告和严格是很难的。我不建议使用Big Bang方法,在所有内容上设置警告(更不用说限制)。你会被警告淹没在无用之中。

首先在脚本使用的模块上启用警告(有一些,不存在?),而不是对所有内容应用警告。让核心清洁,然后开始在外围工作,一次一个单元。所以,事实上,我建议使用一个简单的(Perl)脚本,它只是找到一个不以哈希开头的行,并添加use warnings;(也许use strict;,因为你要去一次只处理一个脚本),所以你可以一次完成一个脚本的翻新。

换句话说,您可能最好在实际编辑每个文件时进行翻新。

我只使用一揽子选项对问题的范围进行简单的评估:它是一个完整而彻底的灾难,还是仅仅是几个文件中的一些简介。遗憾的是,如果代码是在没有警告和严格的情况下开发的,那么它更可能是“灾难”而不是“最小”。

您可能会发现您的前任很容易复制和粘贴,并且在复制的代码中会重复出现一些错误的习惯用法。编写一个Perl脚本来修复每个脚本。我的个人fix*目录中有一堆bin脚本可以处理各种更改 - 修复由顽固(或者更常见的是,长期离职)同事创建的问题,或者适应我自己不断变化的标准

答案 2 :(得分:5)

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