• ベストアンサー

if文を使用すると表示されません。

フォームに年月日を入力してもらい、下記のスクリプトで 入力画面を表示させようとしています。 年月日を入力するフォームにはhiddenをいれ、if文でサブルーチン &newFormを表示させようとしているのですが、うまくいきません。 <input type=hidden name=mode value="data"> if文を使用せずに、&newFormを直接呼び込むと表示するのですが・・・。 ぜひご教授願えればと思います。 よろしくお願いします。 ===================================================================== &query; # 初期設定 if($in{'mode'} eq "date"){ &newForm; } sub newForm{ print"Content-type:text/html\n\n"; print <<EOF; <html> <head> <title></title> </head> <body> <textarea name="diary" rows="30" cols="70"></textarea><br> <input type="submit" value="書き込み"> </body> </html> EOF } sub query{ $ENV{'REQUEST_METHOD'}=~ tr/a-z/A-Z/; if ( $ENV{'REQUEST_METHOD'} eq "POST" ){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }else{ $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $in{$name} = $value; } }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

少し気になったので。 FORM側 <input type=hidden name=mode value="data"> CGI側 if($in{'mode'} eq "date"){ &newForm; } もしかして、「date」と「data」の打ち間違いではありませんか?

arumajiro39
質問者

お礼

ありがとうございます。 イージーミスでした。。。 てっきりスクリプトが原因だと思っていました。

その他の回答 (1)

  • HUTABA
  • ベストアンサー率27% (436/1611)
回答No.1

$in{'mode'}に正しくデータが入っているかを確認してはどうでしょう? ここにデータが正常に入っていないような気がします。 ><input type=hidden name=mode value="data"> とは、フォーム(&newForm)を表示させるためのフラグに使用しているんですよね? これが正常に送信されているかを確認すれば、原因がどこにあるのか掴めると思いますよ。 色々な所でデータをprint ()してみるのは、デバッグの基本的なやりかたです。

arumajiro39
質問者

お礼

アドバイスありがとうございました。 printで確認すればよいんですね。 ひとつ勉強になりました!!