网乐原科技

直播中

news center新闻中心
首页 > 资讯中心 > 软件技术

如何利用Perl开发Internet/Intranet应用之二

发布时间:2008-10-17     阅读数: 次       来源:网乐原科技
三利用Perl开发Internet/Intranet应用的方法与技巧

----1 Perl5.0的某些语法

----为了方便大家对后面内容的理解,在这里先介绍一些perl5.0的基础知识。

----1)变量(对象)的表示方法:前面以$打头,如:$db,$bcd

----2)普通阵列的表示方法:前面以@打头,如:@value

----读取方式:$value[0],$value[1]...

----3)相关阵列的表示方法:前面以%打头,如:%value

----相关阵列与普通阵列没有什么不同,差别只在它的索引值是用字串,而非一般常用的整数值。

----读取方式:$value{$string1},$value{$string2}...

----4)读写文件用open命令

----如:open(INPUT,"< zyr.txt");

----读文件用“< ”、写文件用“ >”、追加文件用“ > >”

----2 强大的字串处理功能

----在前面已提过perl具有非常强大的字串处理功能,它除了提供一些字符运算比较符(eq,ne,le...)外,还提供了大量针对字符串匹配的参数。这是其它一些cgi编写语言所不具有的。

----我们经常会遇到,传递的参数是中文信息,但接收到后却都是乱码。这是什么原因呢?我们都知道,一个中文占用2个字节,而一个英文字母只占用1个字节,unicode编码除外(unicode是Microsoft提出的标准,采用16位同时对中英日韩等多国文字进行编码的机制)。server接收到参数信息后,会以字节为单位把每单位信息转换为两个十六进制数,这时候,中文的高字节会被转换为"%**",而低字节也被转换为"%**"。如果使用perl,该参数信息非常容易就能被还原出来。

...
$info=$ENV{'QUERY_STRING'};
#读取参数信息到变量$info中
$info=~s/%([\dA-Fa-f][\dA-Fa-f])
/pack("c",hex($1))/eg;

----该语句的语法含义是:s是取代的意思;"/"中的内容是要找的格式(“=~”是一些特殊字符,具体含义见表一);%([\dA-Fa-f][\dA-Fa-f])表示以%开始,后连续跟着两个十六进制数的字串(\dA是一些字符匹配格式,具体含义见表二),找到该字串后,系统把该值存放在$1中;pack("c",hex($1))表示把$1中的数转换为真正的十六进制字串;e表示把整个要替换的字串当做表达式;g表示整个字串都要做相应的查找替换。

----除了转换中文参数外,我们还经常要面对查找、替代诸如log文件、邮件等大量信息的困难;如果使用perl提供的一系列参数,将省去很多不必要的麻烦。限于篇幅关系,下面仅列出一些常用的参数。

----表一:

=~寻找给定字串的特殊格式
m取消//内“^”、“$”的特殊含义
i字串匹配时不考虑大小写
x字串匹配时不考虑空格
s取代的意思

表二:
\w匹配一个文字或数字字符,包括“_”
\W匹配一个非文字/数字字符
\s匹配一个空白字符,包括“space”、“tab”键入的字符
\S匹配一个非空白字符
\d匹配一个数字字符
\D匹配一个非数字字符
\b匹配一个二进制字符
\B匹配一个非二进制字符
\A仅从字串开始进行匹配
\Z仅从字串最后进行匹配
\G表示m/结束

网乐原科技

客服热线:0771-5761507

QQ:53290011

QQ邮箱:53290011@qq.com

工作时间:周一到周五 9:00-18:00

地址:广西南宁市江南万达写字楼C16栋1309室

物联网开发

关注我们

微信小商店 腾讯QQ客服 微信客服