在Perl项目中,通常如何修复脚本中的错误? 请任何人都可以提出一些想法。 提前谢谢。
答案 0 :(得分:4)
我的第一个想法是perldoc perldebug
我认为这是一个更好的起点。
我的第二个是:总是把
use strict;
use warnings;
位于脚本顶部,您可以输入
use diagnostics;
也是为了产生更详细的警告诊断
在打开Pandora框之前,请利用Perl模块Data::Dumper
。
显示所有(嵌套的)数据结构和对象很有用,请参阅(我使用perlconsole
,尝试一些技巧很好):
$ perlconsole
Perl Console 0.4
Perl> my $ref = { foo => 'bar', arr => [ 1, 2, 3, [ qw/a z e r t y/ ] ] }
HASH(0x1fc25a8)
Perl> use Data::Dumper;
Perl> print Dumper $ref;
$VAR1 = {
'foo' => 'bar',
'arr' => [
1,
2,
3,
[
'a',
'z',
'e',
'r',
't',
'y'
]
]
};
1
Perl>
您将看到Perl可以使用
在调试器中运行脚本perl -d -e 42 script.pl
帮助说:
$ perl --help | grep -- '-d'
-d[:debugger] run program under debugger
您也可以通过以下方式“追踪”它:
perl -d:Trace script.pl
还有一个gui调试器,它带有Devel::ptkdb
模块,例如:
perl -d:ptkdb script.pl
尝试
perlcritic
也是批判Perl源的命令行界面。
也可以分析您的代码,参见
http://metacpan.org/pod/Devel::NYTProf
http://blog.timbunce.org/2008/07/15/nytprof-v2-a-major-advance-in-perl-profilers/
答案 1 :(得分:3)
perl -c <your program>
...会在Perl脚本中提供任何语法错误,包括您可以在Internet上查找的特定错误消息。
另外,请给自己一个机会: -
use strict;
在每个Perl文件的顶部。没有它,Perl将自动生成您输错的变量。有了它,任何尚未声明的变量都算作语法错误。