- ベストアンサー
何が違うのかサッパリ
- スクリプトのソースで上手くいかなかったため、なぜ違うのか聞いたが理解できなかった。
- 条件分岐の記述方法について理解できない。キーワード検索しても解決しない。
- Perlの基礎を勉強しており、関数やデータの扱い方は理解している。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まず、2箇所でヒアドキュメントを使ってますよね? それぞれ、識別子(WCとなっているもの)が同じですが、2箇所でヒアドキュメントを使う場合それぞれ異なる識別しにしないとダメですよ(WC_1とWC_2のように)。 次にプログラムの構造ですが、引数がない場合はフォームを表示、そうでない場合はフォームの入力値に対する出力をさせたいようですが、まずPerlでフォームデータを扱うにはcgi-lib.plを使うのが一般的です(使わなくても自力で解析は可能ですが面倒です)。 HTTPの引数はURLエンコーディングされていますから、これをデコードする必要がありますし、またGETメソッドとPOSTメソッドの場合でデータを取り出す方法が異なります。この辺のことをすべて予期に計らってくれるので、cgi-lib.plはとても便利です(これを使用していないPerl製のCGIを見つけることは難しいほどです)。 http://www.futomi.com/lecture/form/cgilib.html フォームからのデータ取得の基本がわかっておられないようですので、上記ページをよく読んで理解してください。 基本的な流れは ・cgi-lib.plライブラリを読み込む ・ReadParse()関数を実行 ・連想配列%in{}にフォームのデータが読み込まれるので、それにしたがって処理。 (たとえばフォーム"namae"に対する値は$in{"namae"}を見ればわかる) ・&ReadParse()の結果、引数がない場合はフォームを表示する とりあえず今のプログラムは「わかりません」の部分だけを変更すればどうにかなるという状態ですらありません。
その他の回答 (1)
- steel_gray
- ベストアンサー率66% (1052/1578)
このスクリプトを見た感じでは、なんとなく無茶な事をやろうとしているので、 Perlの基礎をおさえているなら、次は、 HTTP通信やCGIの基礎を勉強してみてください。 http://www.rfs.jp/sb/perl/03/01.html とか。
お礼
有り難うございました。
お礼
詳しく有り難うございます。 たいへんたすかります。