重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

すみません、CGIの初心者なのですが、下記のプログラムをしたところうまく起動せず困っております。ifの構文を抜いた場合はうまく動くのですが、名前欄等を入力されなかった場合、エラー表示を出したく、if文を追加したのですが、うまく動きません。どなたか原因おわかりになりますでしょうか?

#!C:\Perl\bin\perl

# ライブラリ
require 'cgi-lib.pl';

# デコードサブルーチン
&ReadParse(*form);

# ライブラリ
require 'kaiin_sub.pl';

#名前欄、メールアドレス欄、住所欄、郵便番号欄がのチェック

if($form{'name'} eq""||$form{'mail'} eq""||$form{'post'} eq""||$form{'jyusyo'} eq""){

#必要事項が空白のとき
#エラーコードを表示するサブルーチン

&input_error;

#cgiプログラムの終了

exit;

}else{

# ライブラリ
require 'jcode.pl';


# 文字コード変換サブルーチン
&jcode'convert(*form,'sjis');

# 連想配列から値だけを取り出し、区切りのハイフンを追加
$data = "$form{'name'}\n$form{'furigana'}\n$form{'mail'}\n$form{'post'}\n$form{'jyusyo'}\n$form{'jyusyo1'}
\n$form{'kansou'}\n\n----------\n\n";



# 追加書き込みモード
open(ENQ, ">>enquete.dat") || die "File 'enquete.dat' Open Error.";

flock(ENQ, 2);

print ENQ $data;

flock(ENQ, 8);

close(ENQ);


# -----ここから出力 -----
print "Content-type:text/html\n\n";

print << "END_OF_HTML";

<HTML>
<HEAD>
<TITLE>(^_^)</TITLE>
</HEAD>

<BODY bgcolor="cornflowerblue">
<CENTER>
<B><FONT size="6">
<FONT color="white">
<BR>
会員登録は完了致しました。
<P>
ご協力ありがとうございました。</FONT>
<P>
<FONT color="white">(^O^)/~</FONT>
</B>
</CENTER>
</BODY>
</HTML>

END_OF_HTML

}

またkaiin_sub.pは以下となります。

# -- 入力不足エラーを表示するサブルーチン --
sub input_error {

print "Content-type:text/html\n\n";

print << "END_OF_ERROR";

<HTML>
<HEAD>
<TITLE>エラー</TITLE>
</HEAD>

<BODY>
<CENTER>
<FONT size="6" color="red"><B>
<BR>
お名前欄、メールアドレス、郵便番号、住所のいずれかが空白です
<P>
もう一度入力して下さい。
</B></FONT>
</CENTER>
</BODY>
</HTML>

END_OF_ERROR
}

宜しくお願い致します。

A 回答 (2件)

ちょっと試してみました。


すると次のエラーが出ました。
kaiin_sub.pl did not return a true value at test.pl line 10.

もしスクリプトがこの通りならば、kaiin_sub.pl の最後に次の1行を加えて下さい。
1;

私の所ではこれでinput_errorが表示されました。

require で別ファイルを読み込むときは、最後に真を返すことになっています。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。無事にinput_errorが表示されました。大変感謝です!!ありがとうございました!!

お礼日時:2011/02/22 11:44

試す気はないので質問するだけだけど, 「うまく動きません。

」というのは何がどう「うまく動かない」のですか? 少なくとも「どうなったら『うまく動いた』と言えるのか」はあなたにしかわからないですよ.

あと, いまどき jcode.pl を使うのもどうかと思う.
    • good
    • 0

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