如何调试Perl项目

时间:2012-11-20 13:27:14

标签: perl

在Perl项目中,通常如何修复脚本中的错误? 请任何人都可以提出一些想法。 提前谢谢。

2 个答案:

答案 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

还有一个调试器,它带有Devel::ptkdb模块,例如:

perl -d:ptkdb script.pl

ptkdb


尝试

perlcritic

也是批判Perl源的命令行界面。


也可以分析您的代码,参见

http://metacpan.org/pod/Devel::NYTProf

http://blog.timbunce.org/2008/07/15/nytprof-v2-a-major-advance-in-perl-profilers/

debug

答案 1 :(得分:3)

perl -c <your program>

...会在Perl脚本中提供任何语法错误,包括您可以在Internet上查找的特定错误消息。

另外,请给自己一个机会: -

use strict;

在每个Perl文件的顶部。没有它,Perl将自动生成您输错的变量。有了它,任何尚未声明的变量都算作语法错误。