Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 其他编程语言 > perl学习笔记(一)
【标  题】:perl学习笔记(一)
【关键字】:perl
【来  源】:http://www.cublog.cn/u/17354/showart.php?id=143020

perl学习笔记(一)

Your Ad Here

第一章 perl基础

1,更为复杂的散列读和写

a.用不是perl的标准模块Storable

b.用这句告诉perl用该模块:

use storable qw(nstore retrieve);

表明用到了模块中的两个函数。

c.nstore函数用途是,在一个文件中保存散列,

my $status = nstore \%hash, “file.dat”,如果成功返回true,不成功返回未定义。


2.比较运算符:= == eq

=表示赋值。

==某变量的是否等于某个值。

eq表示相等

例如:if(“Sun” == “Lee”) 错误

if(“Sun” eq ”Lee”) 正确


3.definedundef

defined是函数,测试某个变量是否有某个值。

undef不是一个函数,他将变量的值设置成undefined,并在这一过程中返回undefined

例如:if(undef($value))

{

print “The value is not defined”;

}

这段程序不会输出你想要的结果,不能正常工作。


反而:

if(not defined($value))

{

print “The value is not defined”;

}

这段程序会输出你想要的结果,能正常工作。

这种方法是检测变量是否未定义的方法。


4.“真”的定义

未定义变量为false

空字符串也为false

值“0”false

其他情况(菲空字符串或非0数字)为true

经典话语:“真理为判断结果为肯定的任何事物。绝对真理好比最高法院在审判时,9个人中有5个人投赞成票。”

注意:当程序读入一整行(包括新行同时被读入),当程序遇到空行时,行变量值为“\n”而不是“”。


第二章 数组

1.数组的定义:用符号“@”。

例如:@array


2.数组元素的个数

在遍历数组时,数组元素的个数要用“<=”符号,否则,他会忽略数组的最后一个元素。

注意:表达式@#array返回的是数组的最后一个元素,对于单元数组@#array是等于0的,而对于空数组,则@#array返回-1


3.几个函数:

1push:在数组的末尾添加一个元素。

2pop:在数组的最后去掉一个一个元素

3shift:在数组的起始处去掉一个元素

4unshift:在数组的起始处添加一个元素

4.splice函数

功能:删除或替换数组的一部分,也可以在数组中插入记录。

格式:splice @array, $offset, $length

返回值:根据上下文不同,他的返回值也有所不同。可以是数组也可以是标量。


5.split函数

功能:分解字符串。

格式:split 分割符,字符串

返回值:数组。

1

表达式

解释

/\t/

Tab符号

/+/

一个或多个空格

/\s+/

一个或多个空白符——即空格或TAB

/,/

逗号

/,\s*/

逗号,可能后面有0个或多个空白符

/\n/

新行(当字符串包含很多行,而且想将单行分解成数组时有用)



6.join函数

功能:连接字符串。

格式:join $string, array

返回值:string

7.@ARGV变量

程序的命令行参数。

得到这个参数使用变量$#ARGV他的的一个参数不是程序的名字,将程序的名字赋给变量$0


第三章 正则表达式

1.表达式位置:正则表达式放在(//)当中。

例如:/#/


2.匹配预算符:

符号:”=~”

功能:检查左边的字符串是否与右边的正则表达式匹配。

如果匹配,则,为true,否则,为false

例如:$line =~ /#/ 表示:一行中是否存在“#”字符。


3.字符串开头符号

符号:“^”

功能:检查一行的开头。

例如:$line =~ /^#/ 表示:一行的是否以#开始。

注意:可以用符号--/^$/判断一行是否是空行

例如:$line =~ /^$/ 表示一行的开始即是结束。

如果该行含有一个或多个空格,则应该使用符号--“ *” 表示匹配一个或多个空 格。则上式就边成了--$line =~ /^ *$/--。


4.字符集

符号:[]

常用的: ^--匹配行的开始。

[0-9]--匹配单个数字。

[0-9]*--0个或多个额外的数字。

$--匹配字符串的结尾。

注意:*--0个或多个空格

+--告诉perl重复前一个原子一次或多次。


5.空白符:(\s

表示:空格和[TAB]

这样上式就可以变成:$line =~ /^\s*$/


6.使用分组来分解行

符号:“()”--小括号。

注意:(1/^[a-z]//[^a-z]/不同

解释:第一个中的“^”表示在[]范围之外,意思是“行的起始(^)”,后面紧接着是小写字母([a-z])

第二个中的“^”表示脱字符(^)位于范围指定([])之内,意思是除了后面的小写字母为所有字符。目的是与非小写字母匹配。

2)美元符号($)有双重意义:

一,在范围指定[]之外,意味着“匹配行未”。

二,在范围指定[]之内,意味着“字面值”。

例如:$line =~ /([^#]*)(#.*)/

解释:第一部分,匹配#之外的任何字符并重复0次或多次,把他赋给$1

第二部分,散列字符,任何字符(.)重复0次或多次,把他赋给$2


7.处理可选(|)和限制匹配

符号:|

引例:MACRO = “String with # in it” #注释

象这样的怎么办?

命令要素: #的任何字符。

一个引用字符串。

或者其一,或者两者重复0或多次。

例如:$line =~ /^(([^#”]*|“.*”)*)(#.*)/

改版一:$line =~ /^((?:[^#”]*|”.#”)*)(#.*)/

其中“?:”表示不要把结果放到$<number>变量中。

改版二:$line =~ /^((?:[^#”]*|”.#?”)*)(#.*)/

其中第二个“?”表示匹配尽量少的部分。


8.条件匹配

引例:MACRO=”String with \” in it” #注释

解决方案:如果(...条件...)不匹配。

术语:“取反后视断言”。

命令要素: 一个起始引号(”)。

0或多个内部字符(.*)。

仅当...时发挥作用的结束引号(”)。

他的前面不是一个\?<!\\)。

改版三:$line =~ /^((?:[^#”]*|”.#?(?<!\\)”)*)(#.*)/

改版四:$line =~ /^((?:[^#”]*|”.#?(?<!\\)”)*)(\#.*)/x

其中:x—表示可扩展的正则表达式,即,允许在正则表达式中注释。

注意:不能在正则表达式注释中使用符号\


9.替换

符号:s//<flag>$line =~ /^((?:[^#”]*|”.#?(?<!\\)”)*)(#.*)/

格式:$line =~ s/<old>/<new>/<flag>

其中:<flag>可以是gi等。

g表示尽可能多的执行替换。

i表示执行匹配时忽略大小写。


Java的特点:【上一篇】
Perl特殊变量:【下一篇】
【相关文章】
  • 在HyPerLink中连接多个参数的方法
  • C/C++/Perl/汇编/Java效率比较
  • perl引用理解(留)
  • perlreftut - Mark 的关于引用的简短指南 保留
  • HOT PERL ONLINERS
  • ActivePerlとApacheでパソコンをサーバに -- Windows 95/NT 4.0/9
  • Perl操作Mysql数据(藏)
  • Bioperl scripts
  • (一)从何处获取 Perl 源码、如何编译 Perl 解释器。
  • (二)浏览源码目录结构,了解 Perl 源码布局(之一)。
  • 【随机文章】
  • 12.3.3.5 If statements
  • Oracle中logmnr包的使用详解">Oracle中logmnr包的使用详解
  • 感觉博客堂没有以前那么火了
  • 设置和改变默认调试器
  • 使linux系统对ping不反应
  • Python 简明教程——函数
  • 轻轻松松双机互联
  • 2005-1-6福大Linux考试卷
  • 压缩 NTFS 驱动器
  • 使用 Linux 和 SAMBA替代Windows NT/2000 服务器
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.