• ベストアンサー
  • 困ってます

CGI(Perl)を作ったがうまく実行されない

  • 質問No.2330532
  • 閲覧数116
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 80% (49/61)

度々すみません。


~~~~HTML~~~~
<FORM action="test.cgi" method="POST" NAME="FORM">
<div>最大攻撃力:<INPUT type="text" NAME="att"><br></div>
<div>防御力:<INPUT type="text" NAME="def"><br></div>
<div>クリティ時与ダメ:<INPUT type="text" NAME="cyo"><br></div>
<div>クリティ時被ダメ:<INPUT type="text" NAME="chi"><br></div>
<div>EXD時与ダメ:<INPUT type="text" NAME="eyo"><br></div>
<div>EXD時被ダメ:<INPUT type="text" NAME="ehi"><br></div>
<INPUT type=submit value="実行">
<INPUT type=reset value="リセット"></TD>
</FORM>

~~~~CGI~~~~
#! c:/perl/bin/perl

if($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
}
else {
$query = $ENV{'QUERY_STRING'};
}


foreach $pair(split(/&/,$query)) {
($l_set,$value) = split(/=/,$pair);
$form{$l_set}=$value;
}
$att=$form{'$att'};
$def=$form{'$def'};
$cyo=$form{'$cyo'};
$chi=$form{'$chi'};
$eyo=$form{'$eyo'};
$ehi=$form{'$ehi'};

$hi=int((($chi*2+$def)+(($ehi*2+$def)/1.2))/2);
$yo=int(((($att-$cyo*2)*2)+(($att*1.2-$eyo*2)*2))/2);




print <<END;
Content-type: text/html

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>被ダメテスト</title></head>
<body><p>相手攻撃力は約<b>$hi</b>です。</p>
<p>相手防御力は約<b>$yo</b>です。</p></body>
</html>
END

このまま数値を入力して実行しても、「0」と出てきてしまいます。
読み込み(代入?)が出来ていないのでしょうか?

間違えている部分があればご指摘ください。
※コンパイラはApacheです。

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

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

ベストアンサー率 53% (395/735)

> <div>最大攻撃力:<INPUT type="text" NAME="att"><br></div>
htmlのformでname="att"にしているのに、

> $att=$form{'$att'};
perl側では'$att'になってますよ。

$att=$form{'att'};
としたかったのではないですか?
お礼コメント
superjbs

お礼率 80% (49/61)

そのとおり実行したらきちんと表示されました!


助かりました。ありがとうございました。
投稿日時:2006/08/10 13:35
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ