M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2009年9月25日 15:52

CGI::Carpを使うとDateTimeが動かなくなった

このエントリーをはてなブックマークに追加 mixiチェック

PerlでCGIを作るときに、デバッグ用途でエラーの内容をブラウザなどの吐き出させるのに便利なCGI::Carpというモジュールがあります。これを使うと、DateTimeモジュールが使用できなくなるという不具合に遭遇した。昨日CGI.pmをCPANからインストールした後に発生。それまでは何ともなかった。

まず、正常な場合。

#use CGI::Carp qw(fatalsToBrowser);
use DateTime;
my $dt = DateTime->now( time_zone=>'local' );
die "$dt";
$ perl test.pl 
2009-09-25T13:51:55 at test.pl line 4.
$ 

次に、モジュールアップデート後エラーになってしまう例。

use CGI::Carp qw(fatalsToBrowser);
use DateTime;
my $dt = DateTime->now( time_zone=>'local' );
die "$dt";
$ perl test.pl 
Status: 500
Content-type: text/html
 
<h1>Software error:</h1>
<pre>HASH(0x145936e0) at /usr/lib/perl5/site_perl/5.8.8/DateTime/TimeZone/Local/Unix.pm line 115.
</pre>
<p>
For help, please send mail to this site's webmaster, giving this error message 
and the time and date of the error.
 
</p>
[Fri Sep 25 13:50:07 2009] test.pl: HASH(0x145936e0) at /usr/lib/perl5/site_perl/5.8.8/DateTime/TimeZone/Local/Unix.pm line 115.
$

実運用のCGIにCGI::Carpを残しておくな、ていう話もありますが、いままで問題なかったのに何でなんだろうね。

バージョンについては以下のとおり。

$ perl -MCGI::Carp -e 'print $CGI::Carp::VERSION;'
3.45$ 
$ 
$ perl -MDateTime -e 'print $DateTime::VERSION;'
0.50$ 

環境は、CentOS 5.3のPerl 5.8.8です。

投稿 大野 義貴 [Perl] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2986

コメントする