- ベストアンサー
Perlの初歩
自分のホームページに入れたくてCGIの作り方を調べてみましたがなんせ一日目なんで良くわかりません。ブラウザのフォームから文章を入力してそれをファイルに書き込む方法を教えてください。できればそれぞれの命令の意味もおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
いきなりすぎますよ。それは。 perl でCGIな場合ですが、、、変数の使い方とか・・・一日目ってことで どこまで理解があるのか分かりませんが・・・。一応回答しますが、分からないと してもそれは当然のこととおもわれ。 なお、動くかは確認してません(マテ #! /usr/bin/perl $in = &_getdata; print "Content-type: text/html\n\n"; print map { "$_ = $in->{$_}\n" } keys %$in; sub _getdata{ # jcode.pl を用いる場合。 require './jcode.pl'; #取得したデータを入れておくハッシュ列へのリファレンス及び、 #一時変数をmyにとる my $FORM; my($buffer,@pairs,$pair,$name,$value); # 送信データが POST か GET かで、受け取り方法を変える # 受け取ったデータは $buffer に入る if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } #URLエンコード法に従ってデコード # フォームのデータは & でくっついてるんでそれをきる @pairs = split(/&/,$buffer); foreach $pair (@pairs) { # それぞれのペアに対して、 name と value は = でつながっているのでそれを切る ($name, $value) = split(/=/, $pair); # スペースは + に変換されているのでこれを戻す $value =~ tr/+/ /; # 記号や2バイト文字などを元に戻す $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 受け取った文字コードを指定の(SJIS)に変換する &jcode'convert(*value,'sjis',"","z"); # 代入。 $FORM->{$name} = $value; } # 返す。 return $FORM; }
その他の回答 (1)
- estea
- ベストアンサー率44% (39/87)
補足。 HTML で form action=.. で指定してちょ。 ってか・・・間違ってるやろ。いろんな意味で。 一日目とか言ってるやつが聞く内容ではない気もしつつ・・・
お礼
まともに回答してくれてありがとうございました。短いプログラムだけどいろいろおぼえなければならなそうですね。もっと簡単にできるかなと思ってたんですが。図書館で本借りてきて出直します。