电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网络编程 -> Perl教程
perl常规表达式(2)_perl教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 

三常规表达式(RegularExpresion)相关的运算符及函数

  在perl程序写作中常会用到=~和!~这两个运算符及s和t这二个函数来和常规表达式/pattern/搭配而成一个运算式,如果能够活用这些指令的话,就可以很。轻易地来处理一些字符串,当然在CGI程序设计中了就更能得心应手了。现在就让作者来介绍这些运算符及函数的用法:

-------------------------------------------------------------------------------- 

 指令:/pattern/文字运算

  说明:如果在文字运算中没有使用=~或是!~运算符指定一个字符串来做运算的话,就会使用内定的输出变量$_来做/pattern/文字运算。

  范例一:

  $string="chmod711cgi";

  $string=~/(\W)\s (\d )/;

  第一个(\W )是代表找寻数个字母,并将的找到的字符串指派给$1这个变量,而\s 代表找寻多个空白的字符串,最后(\d )代表找寻个数值,并将所找到的字符串指派给$2这个变量。所以

$1="chmod";$2=711;但是$string还是等于原来的字符串,没有改变。

  范例二:

  $_="chmod711cgi";

  /(\W)\s (\d )/;

  因为是把字符串指定给$_这个变量,所以可以不用=~这个运算符就会得到

  $1="chmod";$2=711;而且$_还是等于原来的字符串,没有改变。

  范例三:

  $string="chmod711cgi";

  @list=split(/s /,$string);

  以上一个或是多个空白字符来分割$string这个字符串,这是一个很常用的语法。此时@list=("chmod","711","cgi");

--------------------------------------------------------------------------------

  指令:=~相配运算符

  说明:这是Perl语言中特有的语法,通常会和文字处理来作运算。

  范例:

  print"请输入一个字符串!\n";

  $string=<STDIN>;#<STIDN>代表标准输入,会让使用者输入一字符串

  chop($string);#将$string最后一个换行的字符\n删除掉

  if($string=~/cgi/){

  print("输入的字符串中有cgi这个字符串!\n";

  }

  如果输入的字符串含有cgi这个字符串的话,就会显示出这个信息。

--------------------------------------------------------------------------------

  指令:!~不相配运算符

  说明:这也是Perl语言中特有的语法,通常会和常规表达式来运算。

  范例:

  print"请输入一个字符串!\n";

  $string=<STDIN>;#<STIDN>代表标准输入,会让使用者输入一字符串

  chop($string);#将$string最后一个换行的字符\n删除掉

  if($string!~/cgi/)

  {

  print("输入的字符串中有cgi这个字符串!\n";

  }

  如果输入的字符串中没有cgi这个字符串的话,就会显示出这个信息。

--------------------------------------------------------------------------------

  指令:tr转换函数

  语法:tr/SEARCHLIST/REPLACELIST/

  其中SEARCHLIST是要转换的字符;REPLACELIST是转换成何种字符。

  说明:tr(translate)就是转换的意思,会把符合转换的字符转换成要转换的字符。

  范例一:

  $string="testing";

  $string=~tr/et/ET/";#此时$string="TEsTing";

  $string=~tr/a-z/A-Z/;#此时$stirng="TESTING";

  范例二:

  $string="CGI Perl";

  $string=~tr/ //;#此时$string="CGIPerl";在传送CGI数据的时候会先将数据编码,其中会将空白的字符转成 这个字符。

-------------------------------------------------------------------------------

  指令:s取代函数

  语法:s/PATTERN/REPLACE/eg

  其中

  PATTERN是文字处理(RegularExpresion)的模式;

  REPLACE是代表取代成何种文字模式。

  而g是这个函数最常用的参数,代表要把所有符合文字模式的字符串全部取代,如果省略这个参数的话,则只取代一个符合文字模式的字符串中;

  而加上e这个参数代表要将REPLACE的部分当成一个运算式,如果没有这个需要的话,就不用加上这个参数了。说明:将符合常规表达式的字符串取成为要取代的字符串

  范例一:

  $string="i:love:perl";

ring="i*love*perl";

  $string=~s/*/ /g;#此时$string="i love perl";

  $string=~s/ //g;#此时$string="iloveperl";

  上一行也可写成$string=~tr/ //;效果都会一样哦!

  $string=~s/perl/cgi;#此时$string="ilovecgi";

  范例二:

  $string=~s/(love)/<$1>/;

  第一个()内所找到的字符串变成$1,在这个范例中,会把变量love这个字符串变成<love>,此时$string="i<love>perl";

  $string="iloveperl";

  $string=~s(i)(perl)/<$1><$2>/;

  在这个范例中,会把i变成<i>;perl变成<perl>,此时$string="<perl>love<i>";  $string="iloveperl";

  $string=~s(\W )/<$1>/g;

  (/w )代表找寻符合一个或是多个英文字符或是数值的字符串,之后再将找到的字符串设成$1。因为加上g这个参数,所以会找到字符串的这三个英文单字,然后再把这三个单字分加上<>这个符号,此时$string="<perl><love><i>";

  范例三:

  $string="www22cgi44";

  $string=~s/(\d )/$1*2/e;

  (/d )代表要找寻$string中一个或是多个数值的字符串,再将找到的字符串设成$1。加上参数e是代表要把$1*2当作是一个运算式,所以$string="www22cgi44";

  $string="www22cgi44";

  $string=~s/(\d )/$1*2/eg;

  加上参数e,所以会把$1*2当作是一个运算符式来看;加上参数g就会把全部符合数值的字符串经过运算式运算之后再把它取代,所以$string="www44cgi88";

  范例四:

  假设原本的字符串是$value="三八!",经CGI数据编码之后,这个字符串就会变成

  $value="!"。以下是一个解码的示范程序:

  $value="!";

  $vlaue=~s/(〔a-fA-F0-9〕

〔a-fA-F0-9〕/pack("c",hex($1))/eg;

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

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·perl常问问题集--第一篇_perl教程
·perl常规表达式(1)_perl教程
·perl语言全面编译(一)_perl教程
·perl语言全面编译(三)_perl教程
·perl语言全面编译(二)_perl教程
·各种平台下perl模块的安装方法_perl教程
·perl语言全面编译(四)_perl教程
·perldbi入门_perl教程
·有线电视宽带数据网络设计管理(上)_视频通信
·perl常问问题集--第一篇_perl教程

最新文章
·php5对mysql5的任意数据库表的管理代码示例(四)_php技巧
·用perl来分析并生成中文excel文件_perl教程
·photoshop基础教程:跟我学调色练习15-室内光效_photoshop教程
·使用perl连接mysql数据库_perl教程
·photoshop把照片打造为漫画艺术风格_photoshop教程
·photoshop绘制印度小美人_photoshop教程
·photoshop快速制作粗糙岩石纹理材质_photoshop教程
·用perl来分析并生成中文excel文件_perl教程
·photoshop特效设计-夜明珠_photoshop教程
·关于xsl中count()的使用_xsl教程


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号