デバッグ

perl -d script.pl

最低限以下だけ覚えておけば使えそうな気がする。後はhelp&使いながら覚える戦法。

h #ヘルプ
s #ステップ実行
l #次の行表示
b #ブレークポイント設定
d #ブレークポイント解除
V PKG VARS #パッケージ変数
y #レキシカル変数
T #スタックバックトレース
|[CMD] #ページャに実行結果渡す


モジュールはちと大変かも。
サブルーチン呼ぶ適当なスクリプトで-dオプションするか、Data::Dumper使って適当にログファイルに吐くとか。
Data::Dumperはこんな感じ。オブジェクト指向的にも書けるみたい。

use strict;
use Data::Dumper;

my ($foo, $bar) = qw(foo bar);
print Dumper($foo, $bar);
print Data::Dumper->Dump([$foo, $bar]);

my $piyo;
{
    local $Data::Dumper::Terse = 1; #$VAR1とか出ないように
    local $Data::Dumper::Indent = 0;
    $piyo = eval (Dumper($foo));
}
print "$piyo\n"; #$fooを再現できる

あと、evalでちょっと嵌ったのでメモ。

eval BLOCK
eval EXPR

の両方があり、前者は実行時例外のトラップに使う。後者は表現をコンパイルして実行。
最後に評価された値が戻り値になる。