理系学生日記

おまえはいつまで学生気分なのか

Carp で強制的にスタックトレースを表示させる

モジュール内でエラーメッセージを出力する際にはよく、Carp モジュールの carp や croak が用いられますが、これらのメソッドは通常ではスタックトレースを伴いません。しかし、デバッグの最中でこのメッセージはどこで出力されたのか、どういうコールスタックを経て出力されたのかを知りたい場合があります。

これらの要望に答えるために、Carp モジュールには carp や croak に対し、スタックトレースを伴わせるように命令するオプションが備えられています。方法は単純で

  • Carp モジュールに verbose を渡す
perl -MCarp=verbose hoge.pl
  • $Carp::Verbose に真値をセットする

のいずれかで OK です。

ref: Carp - warn of errors (from perspective of caller) - metacpan.org