- 締切済み
CGI.pmのパラメーターの名前と格納物の一括処理について
最近perlをはじめて、独学で勉強しております。 プログラム自体始めてで、なんとか各関数を覚えて、 現在初CGIとして自作メールフォームに挑戦しています。 そこでCGI.pmを使いたいのですが、項目追加時などの事を考えると 汎用性を持たせたいと思った時、 my @list = $cgi->param; foreach my $name ( @list ){ my $in{}; my $val = $cgi->param($name); $val = $cgi->escapeHTML($val); $in{$key} .= defined $in{$name} ? "\0$val" : "$val"; } ========================================================== この後その都度そのパラメーターを見極めて、 それようの自作のチェック関数へ引数として渡す。 ========================================================== しか思いつかず、同名複数データ(チェックボックスなどの時、 配列になっている)を どう処理していいかさっぱりわかりません。 どなたかCGI.pmにてフォームを受け取った時、汎用性を持たせる方法 をご存知でしょうか? 現在は仕方なくフォーム値を read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});で取得 ================================================= GET値はファイルアップロードとかを行わないので即undef $bufferを配列に格納、splitして$keyと$valに格納 10進数にもどして分割。foreachでまわして ====================================================== $val =~ s/&/&/g; $val =~ s/"/"/g; $val =~ s/</</g; $val =~ s/>/>/g; $val =~ s/\r\n/\<BR\>/g; $val =~ s/'/'/g; $in{$key} .= defined $in{$key} ? "\0$val" : "$val"; としています。 また、オブジェクト指向がいまいちわからず、 メインルーチンには処理の流れ (最低限の呼び出しとゲッターとセッター?)だけを書いて、 他をモジュール化して参照をなんどもする方法を きちんと覚えるにはデザインパターン(?)とか言う物を 覚えたらいいんでしょうか? 初めてOKWAVEを使うのでわかり辛い説明になっているかもしれませんが、自分が気づかない分かりづらい部分はお手数ですがおっしゃっていただければ、できる限りのご説明をさせていただきます。 ご存知の方、よろしくお願いいたいます。 最後に 最終的なアップ先はレンタルサーバーなので、 もしモジュールが必要なら モジュールは最低限ピュアモジュールか依存関係の少ない アップできるだけで動くモジュールだとありがたいです。 アップ環境はperl5.8です。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ORUKA1951
- ベストアンサー率45% (5062/11036)
CGI.pmを使えば、あなたがされている処理はすべてCGU.pmで可能です。 こちらに詳しい説明があります。 CGI - 簡単なCGI(Common Gateway Interface)クラス http://homepage3.nifty.com/hippo2000/perltips/Cgi.htm フォームから受け取ったデータをCGI.pmで順番にキーの配列と値の配列に入れ、それを順番にShiftで取り出せばよいです。