いきなりすぎますよ。それは。
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;
}
お礼
まともに回答してくれてありがとうございました。短いプログラムだけどいろいろおぼえなければならなそうですね。もっと簡単にできるかなと思ってたんですが。図書館で本借りてきて出直します。