まず下記のようなフォームから
<FORM METHOD="POST" ACTION="/cgi-lib/get.pl">
項目A :<INPUT TYPE="text" MAXLENGTH=4 NAME="a">
項目B :<INPUT TYPE="text" MAXLENGTH=4 NAME="b">
項目C :<INPUT TYPE="text" MAXLENGTH=4 NAME="c">
<INPUT TYPE="submit" VALUE="Send"><INPUT TYPE="reset" VALUE="Reset">
</FORM>
訪問者が以下のように入力し Sendしたとします。
項目A : 1 項目B : 2 項目C : 34すると前回の説明のようにデータ a=1&b=2&c=34 がスクリプトに渡されます。
#!/usr/bin/perl
#キーボード(標準入力)からデータを12文字入力して,変数datに代入する
#漢字は入力しないとします
read(STDIN,$dat,12);
#print文の次の行〜EOFと書かれた行までのデータを表示する
# ここは特に関係ない部分ですが,後で出てくるのでこんなのがあったな
# 程度に覚えておいて下さい
print <<EOF;
kibi
goma
biubiu.
EOF
print $dat,"\n"; #入力したデータの表示
#変数bufにsplit演算子でdatの内容を&で分離したものを代入する
# 変数bufの要素は ("a=1","b=2","c=34")となる
# 要素の参照は 0番目からとなります(C言語のargvのようなもの)
@buf = split('&',$dat);
print $buf[0],"\n"; #変数bufの要素の表示
print $buf[1],"\n";
print $buf[2],"\n";
#foreach文により変数bufの要素をひとつずつ取り出し変数itemに代入する
# そして { ... } の中の処理を全ての要素についておこなう(ここでは3つの要素)
foreach $item (@buf) {
($var,$value) = split('=',$item); #変数itemの内容を=で分離したものを
#変数var,変数valueに代入する
$itm{$var} = $value; #変数itmの要素名varに要素値valueを代入する
print $var;
print $value,"\n"; #要素名と要素値をつなげて表示
}
$a = $itm{'a'}; #変数aに変数itmの要素名aの要素値を代入する
$b = $itm{'b'}; #変数bに変数itmの要素名bの要素値を代入する
$c = $itm{'c'}; #変数cに変数itmの要素名cの要素値を代入する
#変数itmはPealでいう連想配列というものでPerl文で内容を書くと
#%itm = ("a","1","b","2","c","34")となり"a"に対して"1"が
#"b"に対して"2"というようにキー(要素名)と値(要素値)が対になって記憶されます
#プログラミング言語の配列というと添字は数値なのが一般的ですが
#Perlでは文字も添字として使えるといったら解るでしょうか
print $a,"\n"; #変数aの表示
print $b,"\n"; #変数bの表示
print $c,"\n"; #変数cの表示
kibi goma biubiu. a=1&b=2&c=34 a=1 b=2 c=34 a1 b2 c34 1 2 34説明が難しかったかもしれませんが,自分で作ろうという人は是非理解して下さい。
kibita@orange.or.jp