我必须优化用Perl编写的Intranet(大约3000个文件)。我要做的第一件事是启用警告“-w
”或“use warnings;
”,这样我就可以摆脱所有这些错误,然后尝试实施“use strict;
”。
有没有办法告诉Perl一直使用警告(比如PHP php.ini
中的设置),而无需修改每个脚本以将“-w”添加到它的第一行?
我甚至考虑为/usr/bin/perl
创建一个别名,或者将其移到另一个名称并创建一个简单的脚本而不是仅添加-w
标志(如代理)。
你会如何调试它?
答案 0 :(得分:12)
嗯...
您可以将PERL5OPT设置为保持-w
。有关详细信息,请参阅perlrun manpage。我希望您也会考虑使用-T
或-t
进行安全跟踪。
但我不羡慕你。在没有use warnings
和use 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
。