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

use CGI qw(standard);

if(!open(TOP,"$TOP_HTML")){&error('トップページデーターファイル読み取りエラー。'); }
else{
@topdata=<TOP>;
close(TOP);
}
・・・

================================
上のような例があるとして実行可能な状態になっています。
そこに
$year = param('year');
$mon = param('mon');
というparam関数をいれるとインターネットサーバーエラーになります。
モジュールをいままでつかったことがなく簡単に使えそうだと思い試したところいきなりエラー。

エラーログを調べたところ
Undefined subroutine &main::param called at C:/sample.cgi line 9.
となります。line 9は$year = param('year');の行です。なにがいけないのでしょうか?

A 回答 (2件)

use CGI qw(standard);



ではなく、

use CGI qw(:standard);

です。
記述ミスですね。これで上手く動きます。
    • good
    • 0
この回答へのお礼

とほほ・・・
初歩的なミスでした。
これでうまくうごきました。
ありがとうございました。

お礼日時:2005/05/21 22:59

CGIモジュール内で定義されている関数などは、


CGIクラスの関数として定義されています。
そしてクラスの定義しかしていませんから、実体がありません。

まぁおまじないのように以下のようにしてみては?

my $q = new CGI();
$year = $q->param('year');
$mon = $q->param('mon');


「Perl CGIモジュール」で検索するだけでも解説やサンプルがでてきますよ。

モジュールはいちいち自分で作らなくていい、作りたいものの機能部分だけに集中できるという利点はありますが、使い方はしっかり調べないと自分で把握できないバグを作りかねません。

しっかり使い方を調べることをお勧めします
    • good
    • 0
この回答へのお礼

CGIモジュールは便利そうなので勉強してつかえるようにします。
ありがとうございます。

お礼日時:2005/05/21 11:33

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