????? cgilib??(¦Ä????)
??????????????????????????cgilib.pl?????
#!/usr/bin/perl
sub readGetData{
# ??????????queryString???????????????????
local(*queryString) = @_ if @_;
# ???????????QUERY_STRING???????????$queryString
$queryString = $ENV{"QUERY_STRING"};
return 1;
}
sub readPostData{
local(*queryString)=@_ if @_;
local($contentLength);
# ???????????CONTENT_LENGTH???
$contentLength = $ENV{"CONTENT_LENGTH"};
# ????????????
if($contentLength){
# ???õôSTDIN???contentLength????????????$queryString
read(STDIN,$queryString,$contentLength);
}
return 1;
}
sub readData{
local(*queryString) = @_ if @_;
# ???????????REQUEST_METHOD
$requestType=$ENV{"REQUEST_METHOD"};
# ?????????GET????¨²???readGetData
# ?????????????POST????¨²???readPostData
if($requestType eq "GET"){
&readGetData(*queryString);
}
elsif($requestType eq "POST"){
&readPostData(*queryString);
}
return 1;
}
sub DecodeData{
local(*queryString)= @_;
# ???????????
$queryString=~s/\+/ /g;
# ?????????????
$queryString=~s/%(..)/pack("c",hex($1))/ge;
return 1;
}
sub parseData{
local(*queryString,*formData) = @_ if @_;
local($key,$value,$curString,@tmpArray);
# ??&??????????????????-???
@tmpArray = split(/&/,$queryString);
# ??????@tmpArray?????
foreach $curString(@tmpArray){
# ??=??????????-???
($key,$value) = split(/=/,$curString);
# ????
&DecodeData(*key);
&DecodeData(*value);
# ??????????????
$formData{$key}=$value;
}
return 1;
}
1;
#end of file cgilib.pl
??¡Â?????
???????¹ª???????
#require "cgilib.pl";
???????????
%dataDict=();
&readData(*data);
&parseData(*data,dataDict);
???????????
while(($key,$value)=each(%dataDict)){
print $key,"=",$value,"\n\n";
}
????? ??
paper | appdir | ssv
ÑÇÖÞÅ·ÃÀÔÚÏß