登录模块加载中...
会员投稿 投稿指南 今天是:
打印本页 | 关闭窗口 | 双击滚屏 您的位置首页>>网页制作学习园地>>CGI教程>>CGI应用>>Perl语言的文字处理模式之三(4)
Perl语言的文字处理模式之三(4)
来源:不详 ‖ 作者:佚名 ‖ 点击: ‖ 时间:14-01-14 14:54:44 ‖ 【 】‖ 我要投稿
关键词:Perl语言的文字处理模式之三(4)
范例三: 
  $string="ww22cgi44"; 
  $string=~s/(d+)/$1*2/e; 
  (d+)代表要找寻$string中一个或是多个数值的字符串,再将找到的字符串设成 
$1。加上参数e是代表要把$l*2当作是一个运算式,所以$string="www44cgi44"; 
  $string="www22cgi44"; 
  $string=~s/(d+)/$1*2/eg; 
  加上参数e,所以会把$1*2当作是一个运算式来看, 加上参数g就会把全部符合数 值 
的字符串经过运算式运算之后再把它取代,所以$string="www44cgi88"; 

范例四: 
  假设原本的字符串是$value="三八!",经CGI数据编码之后,这个字符串就会变成 
$value="%A4T%A4K%21"。以下是一个解码的示范程序: 
  $value="%A4T%A4K%2l"; 
  $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($l))/eg; 

  在传送CGI数据的时候会把数据编码,其中会将特殊字符或是中文字符编码成以% 开头的连续两个十六进制数的字符串,所以要用s这个函数来找寻这个以%开头的 字符串。为了要把找到的字符串再做解码的处理, 所以要在%这个符号之后加上 ()这个符号, 表示会把找到的字符串记忆起来并指定给$1这个变量,而且要在() 中加上代表是连续两个十六进制数值的文字处理模式(Regular Expression),也 就是[a-fA-F0-9][a-fA-F0-9]。再用hex这个函数($1是代表符合的字符串)把十 六进制数值转成十进制的码,之后再用pack这个函数(以C为参数,是代表 unsigned char value的意思)把这个十进制码还原成原来的字符串。最后就会 把这个字符串解码成$value="三八!"。值得一提的是也可以把这个解码的程序 写成:

  $value=~s/%(..)/pack("C",hex($l))/eg; 
加入收藏:  加入收藏夹  | 发送给好友:  发送给好友
责任编辑:admin
相关文章列表
请文明参与讨论,禁止漫骂攻击。  
网友评论