将perl -w标记的结果写入文件

问题描述:

是否可以将-w标记添加到perl程序的第一行,然后从shell(如bash或dos)运行该程序,并将所有警告写入文件?将perl -w标记的结果写入文件

perl somescript.pl > somefile.txt 

这是倒台检查学校的COBOL课程。我想在我面前将所有的警告都放在一张纸上,这样我就可以通过我的程序并逐个修复它们。如果上述命令不起作用,是否有编程方式将脚本的所有警告都存入文件?多谢你们!

试试这个:

perl somescript.pl 2&> somefile.txt 

当您使用纯重定向(>),你只重定向标准程序输出流,而警告得到保存标准错误输出流。例如参见Bash Reference Manual

CPAN上还有一个Vi::QuickFix模块,可以将警告保存到一个文件中,您可以将其加载到Vim中并检查所有警告,而无需手动查找行号。 (谷歌代表vim quickfix。)但我没有自己尝试。

zoul处理重定向的东西,所以这里是关于警告的惊人复杂的答案。

只需调用程序,像这样:perl -w script.pl

这迫使警告所有脚本和所有模块启用随处可见。在您编写的每个模块中使用警告杂注真的更好。有关此主题的更多信息,请参见perldoc perllexwarn

调试时使用的另一个技巧是Carp::Always。如果在每个错误上强制执行完整的堆栈跟踪。我觉得这非常有帮助。只要像这样运行脚本:

perl -MCarp::Always somescript.pl 

或得到它到一个文件:

perl -MCarp::Always somescript.pl 2&> somefile.txt 

最后,我会从你的问题多一点离题。许多人喜欢使用类似Log4Perl的日志库来测试代码。像这样的工具可以让您在代码的单独运行中启用特定级别的日志记录(例如正常或调试)或应用程序的特定部分。这是调试打印语句的最终(?)演变。在开发过程中对失败进行调试可能非常有用,而在达到维护阶段后可以在现场进行调试。