| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 编程开发 > Perl教程 > 文章正文 用户登录
各种漂亮的鼠标UR
去除头部banner
修改新浪博客上面
Google AdSenser 
Skype为推广员提供
Dotworlds免费提供
Better fonts免费
TinyURL免费缩短网
RealTracker提供免
谁杀死了站长(We

perl5中文教程--应用第1章 cgilib例(未定稿)           

perl5中文教程--应用第1章 cgilib例(未定稿)

作者:佚名 来源:flamephoenix 作者: flamephoen 更新:2006-8-25 21:05:35 错误报告 我要投稿

第一章 cgilib例(未定稿)

by flamephoenix

一个简单的读取并处理表格请求数据的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";
}

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。