01時56分26秒 [Perl/CGI]
ローカル環境(WindowsXP)にセットアップしたPerl(5.8.8)上で実行するとうまくいくんだけど、
サーバ環境(FreeBSD 7.1)上にあるPerl(5.8.9)上で実行すると、うまくいかない……。
Undefined subroutine &Encode::FB_XMLCREF called at XML/TreePP.pm line 1138.
EncodeモジュールにFB_XMLCREFサブルーチンがないと言われてるのは分かるんだけど、
%perl -MEncode -e 'print $Encode::VERSION'
と打ってEncodeモジュールのバージョンを調べると、
2.26
と出るので、Ver 2.26ならFB_XMLCREFサブルーチンはあるはずなんだけどなあ……。
実際にEncodeモジュールのソースを読んでみようかと思ったんだけど、PerlのライブラリにあるEncodeモジュールって、Perlソースじゃなくてバイナリ……? Encode.pmがあるのかと思ったら、なんかCのヘッダファイルとかがあるんだけど。
実際に Encode::FB_XMLCREF を呼んでるとこのソースは、以下のような感じ。
my $encver = ( $Encode::VERSION =~ /^([\d\.]+)/ )[0];
my $check = ( $encver < 2.13 ) ? 0x400 : Encode::FB_XMLCREF();
試しに、バージョンに関係なく 0x400 になるようにしてみると、今度は別の箇所でエラーになる。そのエラーが、上記ソースの書き換えによって引き起こされたエラーなのか、それとも、(上記の問題は解決したが、元々存在している)まったく別のエラーなのか判断できん……。^^;;;
うーん。
ローカル環境ではうまく実行できる以上、ソースに問題があるんじゃなくて、環境側の問題なんだよなあ。
Encode.pm を落としてきて、それを使わせるようにしてみたらいいのかな。
ちょっと実験してみよう……。
この日記へのコメントはお気軽に! コメント数:0件
コメント数: 0件