プロが教えるわが家の防犯対策術!

CGIファイルの先頭は

#!/usr/local/bin/perl

require './cgi-lib.pl';
require './jcode.pl';
&ReadParse();

という感じになっています。
ここでのの require は、日本語を使うためのもの
だと思っています。合っていますか?

&ReadParse() というのは何ですか?
require と関係があるみたいです。
require を書かずに &ReadParse() を書くとCGIエラーになります。

A 回答 (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種類ありますから、どちらかに合わさないと、文字化けしてしまいます。

この回答への補足

今また cgi-lib.pl を検索したら、ReadParse が
いつくかありました。
ありがとうございます。何か間違った検索をしていたのかも
しれません。

&jcode'convert(*変数,'sjis');
とかの説明もありがとうございます。
それも使っていたのだけど、&ReadParse() って何だろう
と疑問に思ってから、ソースを削って &ReadParse() の意味が
分からないかと実験していたところでした。

&ReadParse(); とは、cgi-lib.pl にある
環境変数をPerlの配列変数に置き換えるもの
なんですね。
ありがとうございました。

補足日時:2001/08/14 20:44
    • good
    • 0

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() の関係は今だに疑問が残っています。

補足日時:2001/08/14 19:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!