2012-11-20 53 views

回答

4

我首先想到的是perldoc perldebug

我認爲這是最好的地方開始。

我的第二個是:始終把

use strict; 
use warnings; 

你的腳本的頂部,你可以把

use diagnostics; 

也爲生產出更詳細的警告診斷


打開潘多拉盒子之前,請利用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

3
perl -c <your program> 

...會給你在Perl腳本中的任何語法錯誤,包括具體的錯誤訊息你可以在互聯網上查找的ges。

另外,給自己一個機會,通過放置: -

use strict; 

在每一個你的Perl文件的頂部。沒有它,Perl會自動生成你錯誤輸入的變量。有了它,任何未聲明的變量都會被視爲語法錯誤。

+2

使用術語「autovivify變量」,你所做的方式並不完全準確。自動生成功能仍然可以通過'strict strict'來實現,例如:'my $ var; $ var - > {foo} - > {bar} ='這個hash-in-hash已經被自動生成了。 print $ var - > {foo} - > {bar},「\ n」;' –

+0

你認爲他在做匿名哈希嗎? :) –

+2

不是。只是儘量不要將他混淆。好的,也許我的評論並沒有實現這個目標......;) –