- ベストアンサー
jcode.pl と &ReadParse()
CGIファイルの先頭は #!/usr/local/bin/perl require './cgi-lib.pl'; require './jcode.pl'; &ReadParse(); という感じになっています。 ここでのの require は、日本語を使うためのもの だと思っています。合っていますか? &ReadParse() というのは何ですか? require と関係があるみたいです。 require を書かずに &ReadParse() を書くとCGIエラーになります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
cgi-libの中に「sub ReadParse」が必ずあります。 多分、大文字・小文字が違っていたのでは? 私の使っているcgi-lib.plのバージョンでは54行目にあります。 >>require './jcode.pl'; の方を消して、 >>CGIエラーは発生しませんでした。 というのは、A__さんが作られているperlのプログラムの 中で、jcode.plのサブルーチンを呼び出していないからです。 jcode.plは日本語変換ライブラリーです。 perlで呼び出すサブルーチンは &jcode'convert(*変数,'sjis'); で、これを使っていなければエラーは起こりません。 ちなみに、&jcodeを使っていないと言う事は、特にフォームからデータをPOSTなどで受け渡しされていないと言う事でしょうか。 もし、データをブラウザなどから渡されるのであれば、 &jcodeは必須ですよ。 日本語はEUCとS-JISの2種類ありますから、どちらかに合わさないと、文字化けしてしまいます。
その他の回答 (1)
- burn
- ベストアンサー率65% (25/38)
requireというのは、呼び出す外部サブルーチンを定義する関数です。 &ReadPauseは外部サブルーチンである、cgi-lib.plの中に あるサブルーチンを呼び出しています。 当然requireで定義していないと、ReadPause所在がわからずエラーになります。 cgi-lib.plをエディタで開いて、ReadPauseを探してみてください。ありますよ。 ちなみに、ReadPauseは、CGIに渡される環境変数をPerlの配列変数に置き換えてくれる、ありがたいサブルーチンです。 これを自分で作るとなると一苦労です。
補足
&ReadParse() とは、cgi-lib.pl の方に関係していたんですね。 require './jcode.pl'; の方を消して、 require './cgi-lib.pl'; &ReadParse(); にしてもCGIエラーは発生しませんでした。 でも、cgi-lib.pl の中に ReadPause という文字が含まれていませんでした。 cgi-lib.pl のサイズは3636バイトでした。 cgi-lib.pl と &ReadParse() の関係は今だに疑問が残っています。
補足
今また cgi-lib.pl を検索したら、ReadParse が いつくかありました。 ありがとうございます。何か間違った検索をしていたのかも しれません。 &jcode'convert(*変数,'sjis'); とかの説明もありがとうございます。 それも使っていたのだけど、&ReadParse() って何だろう と疑問に思ってから、ソースを削って &ReadParse() の意味が 分からないかと実験していたところでした。 &ReadParse(); とは、cgi-lib.pl にある 環境変数をPerlの配列変数に置き換えるもの なんですね。 ありがとうございました。