⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgi1.htm

📁 perl快速入门。由浅入深
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<title>Perl中文手册</title>
<LINK rel="stylesheet" href="mystyle.css" type="text/css">
</head>
<body>


<table border="0" width="100%" height="400" cellspacing="0" cellpadding="0">
  <tr>
    <td width="20%" valign="top" bgcolor="#dddddd">
     <table border="0" width="100%" cellpadding="0">
	<tr>
	  <td width="5%">
	  </td>
	  <td width="95%">
<p align="center">Perl 5教程<br>
<a target="_blank" href="http://flamephoenix.126.com">by flamephoenix</a></p>
<p align="center">目录</p>
<p align="center">第一部分  Perl语言</p>
<p><a href="perl1.htm">第一章 概述</a></p>
<p><a href="perl2.htm">第二章 简单变量</a></p>
<p><a href="perl3.htm">第三章 操作符</a></p>
<p><a href="perl4.htm">第四章 列表和数组变量 </a></p>
<p><a href="perl5.htm">第五章 文件读写 </a></p>
<p><a href="perl6.htm">第六章 模式匹配</a></p>
<p><a href="perl7.htm">第七章 控制结构</a></p>
<p><a href="perl8.htm">第八章 子程序</a></p>
<p><a href="perl9.htm">第九章 关联数组(哈希表)</a></p>
<p><a href="perl10.htm">第十章 格式化输出</a></p>
<p><a href="perl11.htm">第十一章 文件系统</a></p>
<p><a href="perl12.htm">第十二章 引用(指针)</a></p>
<p><a href="perl13.htm">第十三章 面向对象编程</a></p>
<p><a href="perl14.htm">第十四章 包和模块</a></p>
<p><a href="func.htm">附录一 函数集</a></p>
<p align="center">第二部分 Perl的CGI应用</p>
<p><a href="cgi1.htm">第一章 cgilib例</a></p>
<p><a href="cgi2.htm">第二章 动态创建图像</a></p>
<p><a href="cgi3.htm">第三章 计数器的编写方法</a></p>
<p><a href="cgi4.htm">第四章 Web Server设置</a></p>
第五章、...<br>
	  </td>
	</tr>
      </table>
    </td>
    <td width="80%" valign="top">
     <table border="0" width="100%" cellpadding="0">
	<tr>
	  <td width="1%">
	  </td>
	  <td width="99%">
<p align="center">第一章 cgilib例(未定稿)</p>

<p align="center"><a target="_blank" href="http://flamephoenix.126.com">by flamephoenix</a></p>

一个简单的读取并处理表格请求数据的cgilib.pl例子:<br><br>
#!/usr/bin/perl<br><br>

sub readGetData{
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 指定局部变量queryString用以保存和传递函数的参数</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;local(*queryString) = @_ if @_;
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 读取环境变量QUERY_STRING的值赋给变量$queryString</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;$queryString = $ENV{"QUERY_STRING"};
<br>&nbsp;&nbsp;&nbsp;&nbsp;return 1;<br>
}<br><br>

sub readPostData{
<br>&nbsp;&nbsp;&nbsp;&nbsp;local(*queryString)=@_ if @_;
<br>&nbsp;&nbsp;&nbsp;&nbsp;local($contentLength);
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 读取环境变量CONTENT_LENGTH的值</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;$contentLength = $ENV{"CONTENT_LENGTH"};
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 检查是否有数据</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;if($contentLength){
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B># 从设备STDIN读取contentLength长度的字符赋给$queryString</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read(STDIN,$queryString,$contentLength);
<br>&nbsp;&nbsp;&nbsp;&nbsp;}
<br>&nbsp;&nbsp;&nbsp;&nbsp;return 1;
<br>}
<br><br>
sub readData{
<br>&nbsp;&nbsp;&nbsp;&nbsp;local(*queryString) = @_ if @_;
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 读取环境变量REQUEST_METHOD</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;$requestType=$ENV{"REQUEST_METHOD"};
<br>	
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 如果请求方式为GET则使用函数readGetData</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 否则如果请求方式为POST则使用函数readPostData</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;if($requestType eq "GET"){
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&readGetData(*queryString);
<br>&nbsp;&nbsp;&nbsp;&nbsp;}
<br>&nbsp;&nbsp;&nbsp;&nbsp;elsif($requestType eq "POST"){
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&readPostData(*queryString);
<br>&nbsp;&nbsp;&nbsp;&nbsp;}
<br>&nbsp;&nbsp;&nbsp;&nbsp;return 1;
<br>}
<br><br>
sub DecodeData{
<br>&nbsp;&nbsp;&nbsp;&nbsp;local(*queryString)= @_;
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 把加号转换成空格</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;$queryString=~s/\+/ /g;
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 转换十六进制字符</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;$queryString=~s/%(..)/pack("c",hex($1))/ge;
<br>&nbsp;&nbsp;&nbsp;&nbsp;return 1;
<br>}
<br><br>
sub parseData{
<br>&nbsp;&nbsp;&nbsp;&nbsp;local(*queryString,*formData) = @_ if @_;
<br>&nbsp;&nbsp;&nbsp;&nbsp;local($key,$value,$curString,@tmpArray);
<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 以&为分隔符把字符串转换成键-值对</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;@tmpArray = split(/&/,$queryString);
<br>	
<br>&nbsp;&nbsp;&nbsp;&nbsp;<B># 在数组@tmpArray内循环</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;foreach $curString(@tmpArray){
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B># 以=为分隔符分开键-值对</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($key,$value) = split(/=/,$curString);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B># 解码</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&DecodeData(*key);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&DecodeData(*value);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B># 把键和值加到字典中</B>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$formData{$key}=$value;
<br>&nbsp;&nbsp;&nbsp;&nbsp;}
<br>&nbsp;&nbsp;&nbsp;&nbsp;return 1;
<br>}
<br><br>
1;<br>
#end of file cgilib.pl
<br><br><br>


<b>使用方法:</b><br><br>
要使用此库需含下列语句:<br>
#require "cgilib.pl";<br>
表格数据处理:<br>
%dataDict=();<br>
&readData(*data);<br>
&parseData(*data,dataDict);<br>
字典数据处理:
<br>while(($key,$value)=each(%dataDict)){
<br>&nbsp;&nbsp;&nbsp;&nbsp;print $key,"=",$value,"\n\n";<br>
}<br>

<br>
</p>
<p align="center"><a href="cgi2.htm">下一章</a> <a href="index.htm">目录</a></p>

  	  </td>
      </tr>        
      </table>
    </td>
  </tr>
</table>

</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -