PERL学习之模式匹配】的更多相关文章

一.简介   模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即模式def.其用法如结合函数split将字符串用某模式分成多个单词:@array = split(/ /, $line);二.匹配操作符 =~.!~   =~检验匹配是否成功:$result = $var =~ /abc/;若在该字符串中找到了该模式,则返回非零值,即true,不匹配则返回0,即false.!~则相反.   这两个操作符适于条件控制中,如:   if ($question =~ /please/) { …
Perl语言的最大特点,也是Perl作为CGI首选语言的最大特点,是它的模式匹配操作符.Perl语言的强大的文本处理能力正是通过其内嵌的对模式匹配的支持体现的.模式通过创建正则表达式实现.Perl的正则表达式与模式匹配的特点一是内嵌于语言之中,而不是通过库或函数来实现,因此使用更简便:二是比一般的正则表达式与模式匹配功能强大. 模式匹配操作符简介 操作符 意义 实例 =~ 匹配(包含) !~ 不匹配(不包含) m// 匹配 $haystack =~ m/needle/ $haystack =~…
一切要从Hollo world开始 公司要用perl....啊, 不会只能自学了, 毕竟是公司啊, 不是学校...公司不学习就滚蛋了...惨惨惨 因为是学习嘛, 感觉开虚拟机比较麻烦所以直接用了个 瘟都死 环境下的 http://www.perlchina.org/get.html Perl是脚本语言,由解释器解释运行,跨平台的 (貌似草莓的这个这跨平台比较好, ps:刚接触, 真心不知道哪好 pps:草莓??王草莓??上单??哈哈我是逗比, 表理我~) 大家可以选择下载 先检查你的perl是否…
使用m//匹配 //这是m//(模式匹配)的一种简写.同qw//操作一样,可以使用任何成对的分隔符.因此,可以使用m(fred), m<fred>, m{fred}, m[fred],或者m,fred,, m!fred!, m^fred^,其它非成对的分隔符也可以 不区分大小写:/i if(/yes/i) {#大小写无关 print “In that case, I recommend that you go bowling.\n”;} 匹配任何字符:/s 默认情况下,点(.)不匹配换行符,这…
1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码;  unless(<condition>){code...;} 等价于  if(<condition>){}else{code...;}  也就是当条件为假是执行. ) { print "Hello"; #Hello } 2. until控制结构 until就是改装过的while, 区别在于它在条件为假是执行代码块. ;; until($i>$j){ $i++;…
1.使用正则表达式替换文本  s///  s/<pattern>;/<replacement>;/ 如果匹配失败, 则什么也不会发生, 变量也不受影响. 返回布尔值, 替换成功时为真, 否则为假. $roger = "This is a text"; $roger =~ s/This (\w+)/This was/; print $roger; $_ = "green scaly dinosaur"; s/(\w+) (\w+)/$, $/;…
最近学习Perl, 准备看一遍入门指南,关键的东西还是记录下来,以便以后复习和查看参考. 笔记来自<<Perl语言入门第5版>> 1. 在Perl内部,不区分整数值和浮点数值,所有数字的内部格式都相同,采用"双精度浮点数"运算,自动转换.范围值(1e-100到 1e100) 2. 可以在一个很大的数中间插入下划线,便于阅读: 61_298_040_283_768,在取模运算时,如果其中一边或两边都是负数,则不同的Perl版本可能会有不同结果.不能计算负数的负数次方,因为会得到复数,…
正则表达式 简单模式:匹配$_中的内容,只需要将模式写在一对斜线(/)中就可以了. 如:#!/usr/bin/env perl use 5.010; $_="yabba dabba doo"; if(/abba/){ say "it matched!"; } 关于元字符 和shell中的差不多: .==>任意字符: *==>重复0次及其0次以上: +==>重复一次及一次以上: ?==>重复0次或一次: 模式分组 在正则表达式中,用圆括号()对…
一.进程处理函数 1.进程启动函数 函数名 eval 调用语法 eval(string) 解说 将string看作Perl语句执行.正确执行后,系统变量$@为空串,如果有错误,$@中为错误信息. 例子 $print = "print (\"hello,world\\n\");";eval ($print); 结果输出 hello, world 函数名 system 调用语法 system(list) 解说 list中第一个元素为程序名,其余为参数.system启动一…
一.打开.关闭文件 open的返回值用来确定打开文件的操作是否成功,当其成功时返回非零值,失败时返回零,因此可以如下判断:    if (open(MYFILE, "myfile"))     {        # here is what to do if the file opened successfully    }    当文件操作完毕后,用close(MYFILE); 关闭文件.    读:open(文件句柄,"<文件名")  open(文件句柄,…
Perl内置特殊变量   一.正则表达式特殊变量:1.$n  :包含上次模式匹配的第n个子串2.$& :前一次成功模式匹配的字符串3.$`  :前次匹配成功的子串之前的内容4.$’ :前次匹配成功的子串之后的内容5.$+ :前一次使用括号的模式匹配的字符串. 二.文件句柄特殊变量:1.$| :如果设置为零,在每次调用函数write或print后,自动调用函数fflush,将所写内容写回文件2.$% :当前输出页号3.$= :当前每页长度4.$- :当前页剩余的行数5.$~ :当前报表输出格式的名…
正则表达式的新手经常将贪婪匹配和最小匹配理解错误.默认情况下,Perl 的正则表达式是“贪婪地”,也就是说它们将尽可能多地匹配字符. 下面的脚本打印出“matched defgabcdef”,因为它尽可能多地匹配模式,直至结尾的‘g’. $data = 'abcdefgabcdefg';$data =~ /abc(.+)g/i;print "matched "; 要改变匹配特点,只须简单地在量词(加号[+]或星号[*])后面加一个问号(?)即可.在上面的程序中把模式改为在‘+’之后包含…
 Perl 中的正则表达式 正则表达式的三种形式  正则表达式中的常用模式  正则表达式的 8 大原则          正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在 CGI 程序设计中就更能得心应手了.下面我们列出一些正则表达式书写时的一些基本语法规则. ----------------------------------------------------------------…
9    Perl 中的正则表达式 正则表达式的三种形式 正则表达式中的常用模式 正则表达式的 8 大原则 正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在 CGI 程序设计中就更能得心应手了.下面我们列出一些正则表达式书写时的一些基本语法规则. -----------------------------------------------------------------------…
本文和大家重点学习一下Perl use和require用法对比,这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序,区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域内的化,用Perl use是不可以引入的. Perl use和require用法对比 对比(一)说明: 这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序, 区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域内的化,用Perl use是不可以引入的 第一.Perl…
Perl编程之路3 标签: perl 列表与数组   Perl里面代表复数的就是列表和数组 列表(list)指的是标量的有序集合, 而数组(array)则是存储列表的变量. 在Perl这两个属于尝尝混用, 不过更精确的是, 列表指的是数据, 而数组指的是变量, 列表的值不一定放在数组里, 但每个数组一定包含一个列表(即便是不含任何元素的空列表)   数组或列表中的每个元素, 都是单独的标量变量, 拥有独立的标量值, 从起始元素到终止元素的先后次序是固定的, 因为没个元素都是独立不相关的标量值,…
这些主要是从 "小骆驼" 书上粘贴或者摘抄出来的, 个人认为需要记的语法知识 "在某些情况下, 你可能需要在一台机器上写程序, 再传送到另一台机器上运行.这时候, 请使用"文本模式(text mode)" 或者"ASCII模式(ASCIImode)". 记住, 千万不能是"二进制模式(binary mode)"即便是文本文件, 不同的系统对待换行符的方式也有所不同, 所以碰到无法理解的换行符,某些老旧的Perl还可能…
一.正则表达式 匹配一个文件中的某个单词,并打印出来 #!/usr/bin/perl use strict; use warnings; ; open(FILE, "< temp.pl"); while(<FILE>){ #print if /\bdata\b/; #next if ~ /^#/; print if (/\bis\b/ && /\bSINK\b/) ; } close(FILE);…
### 由于perl 语法属于很自由的那种, 建议出现错误的时候打开 -w 或者使用 -Mdiagnositics 试一下 ### 如何调试 perl程序 http://www.ibm.com/developerworks/cn/linux/sdk/perl/culture-4/ 简言之, perl -d xxx.pl 命令: h 查看帮助 n 单步 p 查看变量 ### 如何判断一个变量是不是数值 http://stackoverflow.com/questions/12647/how-do-…
在写perl的时候,如果要应用到各种平台的话,比如linux 和windows,会遇到各种问题,有时就是要根据系统类型来加载各种库,之前写的就是这样的, if($^O eq 'linux'){ use XXX::xxx; }elsif($^O eq 'MSWin32'){ use XXX1::xxx1; } 结果是错的,perl提示没有找到XXX这个模块,看来,这里用use的话,perl是回去查找XXX的,就算你没有真的使用,那该怎么办? 去网上搜了一下,解决方法就是如果要动态加载库,可以用 i…
(1)用perl来ls一个目录: 写perl的时候,经常要调用到系统命令,perl有很多等价的函数可以用,但是,不小心任性了,就想用system来实现了,好吧,来个ls把,列出指定的一个目录,直接上代码 sub ls{ my ($dir) = @_; system("ls -al $dir "); } 不做参数校验了,直接ls一个目录,这个是试了一下,确实可以这样做,感觉是挺容易的,没压力.但是,你仔细想一想,这真的可行吗?仔细想一下使用场景,你会发现,这个是一个坑,据说,是惨痛的教训…
1)记得刚开始写perl的时候,对于一个功能,总是拿目前能用的数据类型来解决问题,不想想有没有更好的,能用能解决问题就好,这就导致了后期,要在函数里面添加功能的时候,函数要添加很多参数,一个函数有7.8个参数,并且这些参数都是有关系的, sub is_healthy{ my ($name, $sex, $age, $height, $weight) = @_; } 像上面这个判断一个人是否健康的函数,传入这几个参数,这几个参数还不算多,但是,到了后期,一旦你要增加功能,比如要根据一个人的地址做一…
http://ju.outofmemory.cn/entry/193944 http://blog.sina.com.cn/s/blog_6a6c136d0101dlcw.html http://blog.sina.com.cn/s/articlelist_1785467757_7_1.html http://blog.mcshell.org/category/perl…
一:基础 1:安装perl      centos: yum -y install perl       官网:https://www.perl.org/      升级到5.22:先下载,执行./install.sh 安装           报错:/lib64/libc.so.6: version `GLIBC_2.14' not found (required by perl/bin/perl)           原因:编译时写死了glibc的版本,而系统中只到2.12 ,所以重装gli…
bless有两个参数:对象的引用.类的名称. 类的名称是一个字符串,代表了类的类型信息,这是理解bless的关键. 所谓bless就是把 类型信息 赋予 实例变量. 程序包括5个文件:person.pm :实现了person类 dog.pm :实现了dog类 bless.pl : 正确的使用blessbless.wrong.pl : 错误的使用blessbless.cc : 使用C++语言实现了与bless.pl相同功能的代码 person.pm CODE:#!/usr/bin/perl -wp…
perl有引用的概念:一组数据实际上是另一组数据的引用.这些引用称为指针,第一组数据中存放的是第二组数据的头地址.引用的方式被用得相当普遍,特别是在面向对象的模块.函数的参数传递等常见.但perl对每个引用都是以一个普通的变量来定义的,有时候,如果数据的架构比较复杂,我们可能会困惑于某个变量所指向的地址的实际内容是什么?perl的ref函数就可以帮助我们. 一.说明从perl自带的帮助说明可以了解相关的用法: 引用 $ perldoc -tf refref EXPRref     Returns…
Perl 被设计成90%擅长处理文本,10%处理其余的问题.因此Perl 有强大的文本处理能力,包括正则表达式. 第一个程序 hello world #! /usr/bin/perl -w use strict ; use warnings ; print "hello world!\n" ; warn "test warn\n";#告警信息 die "test die"; #后面的程序不能再被执行 1.1.警告: 使用系统自身告警 perl -…
1.1.数字 所有数字格式内部一致,全部是double 7.25e45   == 7.25 * 1045 5.25 6.00 5.1-2.4          #5.1-2.4,2.7 10/3              #通常是浮点除,3.33333… … 还提供了模数运算符(%).10%3 的值是10 除以3 的余数.两个操作数首先变成它们对应的整数值,如10.5%3.2 转换为10%3后再计算. 指数操作符,两个*号表示,如2**3,表示2 的3 次方,等于8 1.2.字符串 长度无限 P…
  列表或称为数组,和c语言中的数据类似,只是perl自己特殊的一些写法. 1.1.定义 一个列表或者数组可以包含数字,字符串,undef 值,或者任意不同类型的标量值的组合,但是这些元素的类型通常是一致的. 数组下标: ·    数组中的元素是由连续整数编了号的,其从0 开始; ·    下标可以是任何能返回数值的表达式.如果其值不为整数,则自动将其转换为小于它的最大整数值. ·    如果下标超出了数组的范围,则其值为undef.这和通常的变量情况是一样的,如果没有值存放在变量中,则其为un…
子程序,类比c语言中的函数,在形式上个人认为最大的区别:没有形参 1.1.定义子程序 1.2.调用 #! /usr/bin/perl sub marine { $n += 1 ; print "$n\n" ; } &marine; &marine;   1.3.返回值 1.3.1.   基本原则 所有的Perl 子程序都会返回值,在Perl 中返回值和不返回值是没有区别的.当然,不是所有Perl子程序返回的值都是有用的. 由于所有的被调用的子程序都要返回值,因此使用特殊…