looks_like_number on perl_5.8.4

| コメント(0)
versions_perl.gif

Debian sarge の perl は 5.8.4 なんですが、 Class::DBI を make test すると t/16-reserved でFAILする。(DBD-SQLite は 1.08 を使用)

t/16-reserved.........ok 2/5Argument "Bad Taste" isn't numeric in 
subroutine entry at 
/usr/lib/perl5/site_perl/5.8.4/DBIx/ContextualFetch.pm line 51.
#     Failed test (t/16-reserved.t at line 27)
#          got: undef
#     expected: '10'
t/16-reserved.........ok 5/5# Looks like you failed 1 tests of 5.

調べてみると perl 5.8.4 以前で looks_like_number に undef を 放り込んだときに真を返してしまうバグらしい。 http://use.perl.org/comments.pl?sid=25179&cid=38508 そのバグが原因で DBD::SQLite の dbdimp.c の内部で使っている looks_like_number に反応して undef の value を double で bind するのが、Class::DBIのテストでエラーになる原因ってそんな状況。

cdbi-talk で Class::DBI 0.96 and perl 5.8.3 - bad combo? という話題がありましたが、多分原因は一緒。

解決方法としては、5.8.5以上(現在 Stable は5.8.6)をインストールするか、debian package に patch をあてて再インストールするかですね。

Comments

コメントする