- ベストアンサー
テキストエリアのインプットをPerlプログラムへ
基本事項だと思うのですが質問させてください。 まず、HTMLファイル上に <form method= "post" action ="http://localhost/test.cgi> <textarea name ="story" cols="60" rows="10"> This is a test. </textarea> ... <input type="submit" name="submit_story" value="submit"> とプログラムを組みます。 その後、perlプログラムにテキストエリアの内容を送りユーザがsubmitボタンを押したときに HTMLファイルとして出力します。 そのPerlは以下のように組みました。 print "Content-type: text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>The test of CGI</title>\n"; print "</head>\n"; print "<body>\n"; $story = $_POST["story"]; print "<p><h3>Textarea says $story </h3></p>\n"; print "</body>\n"; print "</html>\n"; しかし、$storyは表示されませんでした。 どこがおかしいのでしょうか? もしよければアドバイスをお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> $story = $_POST["story"]; これはPHPの書き方です。 「cgi perl フォーム」などで検索すれば、すぐに見つかると思いますが、 CGIモジュールを使って、以下でいいと思います。 use CGI; my $html=new CGI; my $story=$html->param('story'); GETとPOSTの違いはありません。 $in{'story'}という書き方はcgi-lib.plをキーワードに追加してみてください モジュールを使うのではなく自分で取得する方法を知りたい場合は 「cgi perl サンプル」でどうぞ。
その他の回答 (2)
- leap_day
- ベストアンサー率60% (338/561)
こんにちは cgiファイルのheader部、footer部などの書き方は人によって違うと思うので<body></body>内だけにしますね(^^) ≪入力するほうのhtmlファイル≫ <form action="test.cgi" method="post"> <textarea name="story" cols="60" rows="10">This is test.</textarea> <input type="submit" value="submit"> </form> ≪受け取る側(test.cgi)≫ $story = $in{'story'}; print "<p><h3>Textarea says ...<br>$story </h3></p>\n"; $storyに値が入ったことが分かるように改行してるだけなので気にしないでください(^^)
お礼
$in{}を使うのですね。 回答ありがとうございます。 参考にさせていただきます。
- sakusaker7
- ベストアンサー率62% (800/1280)
> $story = $_POST["story"]; PHPじゃないんで、自動的に$_POSTに値が設定される なんてことはありません。 モジュールなりライブラリを使うか、自力で全部処理するかして 自分で取り出してください。
お礼
回答ありがとうございます。 この記述は PHP用なのですね。 アドバイスありがとうございます。参考になりました。
お礼
回答ありがとうございます。 おかげさまで、サンプルプログラムが完成しました。 情報検索のキーワードまで教えていただき、大変感謝いたします。 ありがとうございました。