揮発性のメモ2

http://d.hatena.ne.jp/iww/

エラー終了時にスタックトレースを出力する

なんかエラーで止まっちゃうときに、どこで止まったかを知るには、use diagnostics; をつかう。

 1: #!/usr/bin/perl
 2:
 3: use strict; use warnings;
 4: use diagnostics;
 5:
 6: use Time::Piece;
 7: use Time::Seconds;
 8:
 9: sub henkan{
10:     my $timestamp = $_[0];
11:     my $tp  = Time::Piece->strptime( $timestamp, "%b %d %T" );  # ★ここでエラー
12:     $tp += ONE_YEAR*(localtime->year-1970);
13:     return $tp->strftime("%F %T");
14: }
15:
16: print henkan('RR Aug  2 17:34:10');
17: #             ↑ごみを入れた

use diagnostics 未使用時

$ ./hoge68.pl
Error parsing time at /usr/lib/perl/5.10/Time/Piece.pm line 470.

なんにもわからない

use diagnostics 使用時

$ ./hoge68.pl  >/dev/null
Uncaught exception from user code:
        Error parsing time at /usr/lib/perl/5.10/Time/Piece.pm line 470.
 at /usr/lib/perl/5.10/Time/Piece.pm line 470
        Time::Piece::strptime('Time::Piece', 'Aug  2 17:34:10', '%Y %b %d %T') called at ./hoge68.pl line 11
        main::henkan('Aug  2 17:34:10') called at ./hoge68.pl line 16

すごいよくわかる


実行時にためしに追加したいときは、コマンドラインオプションで -Mdiagnostics を指定するといける