デコードフォームについて。
以下のスクリプトについて質問があります。かなり多いのですが・・・
sub DecodeForm
#返り値:Name=>Val のハッシュ(グロブ)
#使用例:*form = EncodeForm(); print $form{name};
{
my($encoding) = @_;
my($method) = $ENV{'REQUEST_METHOD'};
local($query, @in, $key, $val);
require 'jcode.pl' if $encoding;
if ($method eq 'GET') {
$query = $ENV{'QUERY_STRING'};
}
elsif ($method eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
}
local(@query) = split(/&/, $query);
foreach (@query) {
tr/+/ /;
($key, $val) = split(/=/);
# %HH形式を元の文字にデコードする。
$key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c", hex($1))/ge;
$val =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c", hex($1))/ge;
$val =~ s/\r\n/\n/g;
jcode'convert(*key, $encoding) if ($encoding);
jcode'convert(*val, $encoding) if ($encoding);
$in{$key} = $val;
}
return *in;
}
多いので先頭から順に箇条書きにさせて頂きます。
・Name=>Val の意味。(#以下がメモであることは分かっています)
・グロブとは何か
・*form = EncodeForm(); print $form{name}; の意味。(特に、先頭の*が分かりません)
・my $encoding という変数も見たことがあるのですが、my($encoding) と my $encoding はどう違うのか。
・クエリとは何か
・jcode.pl とは、インストールしたPerlに標準でついているライブラリなのか?そうでないのならjcode.plとは何か?
・%HH形式とは何か
・\rの意味
・jcode'convert の意味
・*key の * の意味
・*in の * の意味
多くて申し訳ないです。分かる方いらっしゃいましたご教授くださると幸いです。よろしくお願いします。
お礼
回答いただきありがとうございます。 やはり、POSTメソッドに落ち着く!! GETメソッドでもうまくいけば、ログ項目を変更せずにそのままつかえたのですが・・・残念!!