2009年10月 1日(木) 01時56分26秒 [Perl/CGI]
なんでUndefined subroutineって言うんだー?
ローカル環境(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
| « 月末のライトノベル |
前後のエントリ < 旧 / 新 > | 所属がビジネスからエンタメに変わりました » |
このエントリーへのトラックバックURLを表示するにはここをクリック
※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。)
コメント数: 0件