ImageVerifierCode 换一换
格式:DOC , 页数:38 ,大小:62.07KB ,
资源ID:3811376      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3811376.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(perl入门基本读物.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

perl入门基本读物.doc

1、 我的评价: 本书是 perl 的经典入门书籍,介绍了 perl 中最基本的概念和语法,是 perl 入门的好书,我 向所有想了解或学习 perl 语言的朋友推荐本书。书中穿插有 perl 语法形成的历史和原因, 使你能充分感受到 perl 语言的文化,这也是 perl 流行的原动力。本书行文流畅,各知识点 介绍到位,令人很容易明白,达到入门点睛的效果。但本书的作用也就是入门而已,目的很 明确,它没有深入到 perl 脚本语言的高级部份。如果你想了解 perl 的高级功能或使用 perl 来更好地完成你的日常工作,还需进一步学习, perl 语言编程应该是你最好的选择。 第一章 简介 . 1

2、第二章 标量数据 . 1 第三章 列表和数组 . 5 第四章 子例程 . 8 第五章 散列(哈希 hash) . 10 第六章 I/O 基础 . 12 第七章 正则表达式的概念 . 13 第八章 正则表达式提高 . 14 第九章 使用正则表达式 . 16 第十章 更多的控制结构 . 18 第十一章 文件句柄和文件测试 . 22 第十二章 目录操作 . 25 第十三章 处理文件和目录 . 26 第十四章 进程管理 . 29 第十五章 字符串与排序 . 31 第十六章 简单数据库 . 34 第十七章 一些高级 Perl 技术 . 37 第一章 简介 第二章 标量数据 什么是村量数据? 标量( sc

3、alar)是 perl 中最基本的元素。大多数标量要么是一个数字,要么是一个字符串。 perl 基本上把它们视为可相互替换的东西。 数字 所有数字的内部格式都一样 在内部, perl 一律把整数,浮点数按双精度浮点数进行计算。 perl 内部没有整数值 -程序中 的一个整数常量被当作等值的浮点数。 直接量( literal)指的是在 perl 源代码中表示值的方式, 浮点直接量 1.33, 233.5, -3.9 整数据直接量 0, 89, -66, 61_383_883_897_363(一个大数,用下划线以示清晰) 非十进制整数直接量 八进制直接量以 0 开头 十六进制直接量以 0x 开头

4、二进制以 0b 开头 从 5.6 版本开始, perl 允许在直接量中加下划线以示清晰。 0x50_65_7c 数值操作符 加 + 2 + 3 减 - 3 - 2 乘 * 2 * 3 除 / 2/3 模 % 10%3 指数 * 2*3 字符串 单引号字符串直接量 在引号间除了单引号或反斜杠以外的任何字符(包括换行符,如果该 字符串连续占几行)在字符串中表示该字符本身。要想得到一个斜杠,需要连续写两个斜杠, 要得到一个单引号,需要加一个斜杠。 双引号字符串直接量 在双引号内的反斜杠开始发挥它的作用,可以用来指定特定的控制字 符。可以在双引号里面内插变量。 双引号内的转义字符完整列表 n 换行 r

5、 回车 t 制表符 f 换页 b 退格 a 响铃 e Esc(ascii 的转义字符 ) 007 任意 ASCII 码 的八进制值(这里 007=响铃) x7f 任意 ASCII 码的十六进制值(这里 07f=删除) cC 任意 Ctrl 键组合字符(这里是 Ctrl-C) 反斜杠 “ 双引号 l 下一个字母小写 L 所有后面的字母小写,直到 E u 下一个字母大写 U 所有后面的字母大写,直到 E Q 添加反斜杠引用后面的非单词字符,直到 E E 结束 L,U,Q 字符串操作符 . 连接两个字符串 “hello“ . “world“ = “helloworld“ x 串重复操作符 “yang

6、“ x 3=“yangyangyang“ 次数使用前截成一个整数。 4.8=4,小 于 1 的拷贝次数会得到一个空串。 数字与字符串的自动转换 依赖于作用在标量值上的操作符。如果是 +则是数据,如果是 .则是字符串。 “z“.6*7=“z42“ ,“12“*“3“=36 perl 的内置警告 可以要求 perl 在发现你程序有异常时给你一个警告。使用 -w 选项。 #!/usr/bin/perl -w 标量变量 变量( variable)是一个容器的名字,用以存放一个或多个值,变量的名字 在程序中保护不 变,但它所包含的值在执行过程中一般要不停地改变。在 perl 中用美元符号标识。 $a,$

7、test。 选择好的变量名 适当加一些下划线可让变量更易读,更易理解。 标量赋值( assignment) 操作符用等号,它的左边是变量名,右边是值。 二元赋值操作符 += -= *= .= *= and so on 用 print 输出 print “hello worldn“; print “the answer“,6*6,“.n“; 在字符串中替换标量变量 $meal = “brontosaurus steak“; $barney = “fred ate a $meal“; 另一种写法 $barney = fred ate a.$meal; 如果标量变量从未被赋过值,就用一个空串替换。

8、操作符优先级和结合性 善用小括号 perlk 中的操作符优先级和结合性与 C一样 比较操作符 相等 = eq 不相等 != ne 小于 gt 小于等于 = ge if 控制结构 if () .; else .; 布尔值 perl 中没有单独的的布尔数据类型,不过,它使用几条简单的规则。 1、特殊值 undef 是假。 2、 0 是假,所有其它的数字是真。 3、空串 是假,所有其它的字符串一般是真。 4、一个例外,因为数字和字符是等价的,所以 0 的字符形式 0,和它的数值形式有同样的值: 假。 ! 是取反的意思,可以在真值前加,结果就变成了假。 取得用户输入 从键盘得到一个值。一般以 n 字符

9、结束。所以可利用该字符做条件控制。 chomp 操作符 它作用于一个变量,此变量必须存放一个字符串,如果这个字符串以换行符结尾, chomp 就把它去掉。 $text = “a line of textn“; chomp ($text); 去掉换行符 chomp($text =); 最常用的方法,读文本,不带换行符 chomp 是一个函数,所有它有返回值,即去掉的字符个数。 使用 chomp 时可以带或不带小括号,这是 perl 的另一个基本规则,除非去掉括号会改变意 思,否则括号总是可有可无的。 while 控制结构 重复执行一个代码块,只要条件为真。 $count = 0; while (

10、$count ; if (defined($madon) print “the input was $madon“; else print “no input available!n“; 如果你想生成自已的 undef 值,可以用古怪的 undef 操作符 $madon = undef; 好像它从来没有被动过 第三章 列表和数组 在 perl 中,如果“单数”是标量,那么“复数”则由列表和数组来表示。 列表 (list)是一个有序的标量集合,数组 (array)是一个包含列表的变量。精确地说,列表是数 据,而数组是变量,可以有一个不在数组的列表,但每个数组变量都包含一个列表。数组和 列表可以放

11、任意多的元素,最小的是没有元素,而最大的可以把所有内存耗尽。这符合 perl 的“没有不必要的限制”哲学。 访问数组的元素 数组元素用连续的整数编号,从 0 开始,然后按 1 递增。 $fred0 = “a“; $fred1 = “b“; $fred2 = “c“; 如果下标所指的元素超出了数组的区间,那么相应的值就是 undef。 特殊的数组索引 如果你试图存储一个超出数组区间的数组元素,这个数组就会自动按需扩展,对它的长度没 有限制,只要有足够的内存供 perl 使用。 $rocks0 = “a“; $rocks1 = “b“; $rocks2 = “c“; $rocks10 = “end

12、“; 现在就有 6 个 undef 元素。 访问最后一个元素的索引是 $#rocks。 负的数组索引从数组尾部算起, -1 代表最后个元素。 列表直接量 列表直接 量 (list literal)是小括号中的一列由逗号分隔的值。例如: ( 1, 2, 3, 4) (“ fred”, 43.4) () ( 1.100) ( 0.$#rocks) “ .”是区间操作符,能生成一个顺序列表。如上例中的从 1 到 100。列表可包含表达式或 变量。 qw 快捷方式 qw 表示“被括引的单词”( quoted words)或“用空白括住”( quoted by whitespace), perl 按单引

13、号字符串处理它们,所以你不能像在双引号字符串中那样在 qw列表中用 n或 $fred)。 qw /a b c d/ 等同于 (“a“,“b“,“c“,“d“) qw !a b c d! 等同于 (“a“,“b“,“c“,“d“) qw a b c d 等同于 (“a“,“b“,“c“,“d“) 定界符可以选择任意的标点。 列表赋值 ($fred,$barney,$dino) = (“a“,“b“,“c“) ($fred,$barney) = ($barney,$fred) 交换它们的值,比 c 等语言方便很多。 如果变量的个数小于值的个数,则多余的值会被无 声地忽略。 如果变量的个数多于值的个

14、数,则多的变量会得到 undef 值。 at 符号 可以一次指定整个数组。这样 rocks代表“所有的 rocks”。 rocks = qw / a b c/; copy = quarry 从一个数组拷贝一个列表到另一个数组 pop and push 操作符 正真的 perl 程序员不使用索引访问数组,这样发挥不了 perl 的强项。我们经常把数组当信 息栈用。总是从列表的右侧加入新值或删除。 pop 操作取出一个数组的最后一个元素 array = 5.9; $fred = pop(array); $fred 得到 9, array 现在有 (5,6,7,8) $barney = pop(ar

15、ray); $barney 得到 8, array 现在有 (5,6,7) 如果数组是空的, pop 就不管它,因为没有元素可删除,只返回 undef。 push 操作与 pop 对应,它顺数组的最后添加一个元素或一个元素列表。 push(array,0); array 现在有 (5,6,7,0) others = qw /1 2 3/; push array,others array 现在有 (5,6,7,0,1,2,3) 注意: push 的第一个参数或 pop 的唯一参数必须是一个数组变量 ,进栈和出栈对直接量列表 来说是没有意义的。 shift and unshift 操作 类似于 p

16、ush and pop, shift and unshift 对数组的头部进行相应的操作。 在字符串中替换数组 与标量一样,数组的值也可以被替换到双引号字符串中。 print “quartz rocks limestonen“; 打印所有岩石,用空格分开。 注意:不要把电子邮件地址放到双引号字符串中。 foreach 控制结构 foreach 循环遍历列表中的所有值,对每个值执行一个迭代(执行一次循环体) foreach $rocks ( qw /a b c/) print “one rock is $rocks.n“; 打印 a b c。 Perl 最喜欢的缺省变量: $_ 如果你在 for

17、each 循环的开始忽略了控制变量, perl 就会使用 $_。 foreach (1.10) 缺省使用 $_ print “I can count to $_!n“; $_ = “a“; print; 缺省打印 $_ reverse 操作符 reverse 取一个列表的值,然后返回相反顺序的列表。记住它只返回反序列表,并不影响它 的参数,如果返回值不被赋给别的变量,它是不保存。 sort 操作符 sort 取一个列表的值,然后按照内部字符序进行排序。 标量和列表上下文 一个给定的表达式在不同的地方,可能会有不同的含义。 5 + something something 必须是个标量 sort

18、something something 必须是个列表 在标量上下文中使用列表生成表达式 提供标量上下文的表达式: $fred = something; $fred3 = something; 123 + something something +654; if (something) . while (something) . $fredsomething = something; 提供列表上下文的表达式: fred = something; ($fred,$barney) = something; ($fred) = something; push fred,something; forea

19、ch $fred (something) . sort something; reverse something; print something; 在列表上下文中使用标量生成表达式 如果一个表达式在正常情况下不生成一个列表值,那么自然它就会生成标量值,即一个元素 列表: fred = 6*7 得到一个单元素列表 (42) 注意,因为 undef 是个村标量值,所以给一个数组赋 undef 并不能清空数组,清空的更好方 法是赋一个空列表()。 强制使用标量上下文 可以使用 scalar 假函数,它告诉 perl 提供一个标量上下文。 rocks = qw /a b c d/; print “i

20、 have“,rocks,“rocks!n“; 错,打印了石头的名字 print “i have“,scalar rocks,“rocks!n“; 正确,打印石头的数量 列表上下文中的 chomp (lines = ); 读入那些行,不带换行符 第四章 子例程 系统与用户函数 perl 的子例程可以让我们在一个程序中重复利用一块代码,子例程名字 是在前面加一个可有 可无的 print “hello ,sailor number $n!n“; 注意: n 为全局变量 调用子例程 $marine; 输出 hello,sailor number 1! $marine; 输出 hello,sailor

21、 number 2! 返回值 每个子例程在运行过程中,计算值是它一系列动作的一部份。在子例程中得到的最后一个计 算值自动成为返回值。因此注意在向子例程增加代码时要确保最后一个表达式的结果是你希 望的返回值。“最后一个表达式”是指真正的、被最后计算的表达式,而不是正文的最后一 行。 参数 参数列表在子例程运行期间被自动地赋给一个特别的数组变量 _。子例程可以访问这个变 量以确定参数个数和参数的值。也就是说,第一个参数被存在 _0,第二个被存在 _1中, 其它依次类推。 _变量是子例程的局部变量,如果 _中有一个全局变量,它就会在 子例程 调用前被保存起来,而在子例程返回时恢复原值。 子例程中的私

22、有变量 my 操作符生成被称为词法变量( lexical variable)的私有变量。 local 操作符 local 的真正功能是把给定的变量的一个拷贝保存在一个秘密的地方(栈)。这个值在保存后 不能被访问、修改、删除,读出、检查、打印等。在 perl 中没有办法以接近被保存的值。 接着 local 把该变量设为空值(对标量是 undef,对数组是空表),或设为任何赋给它的值。 当 perl 从子例程中返回时,会自动将变量恢复为原先的值。从效果上来看,这个变量被暂 时借用了片刻。 local 和 my 的区别 local 是全局变量,可以想成“ save”(在子例中调用时),在所有新代码中

23、只用 my, my 比 local 快。 可变长参数列表 在 perl 中,经常传递给子例程任意长度的参数列表。子例程可以查看 _数组,从而轻松地 判断参数的个数。但在实际的 perl 编程中,这类检查几乎没有用过,最好是让子例程适应 参数。 一个允许任意参数的例程 $maximum = sub max my ($max_so_far) = shift _; foreach (_) if ( $_ $max_so_far) $max_so_far = $_; $max_so_far; 这段代码使用了被称作“高水位线( high-water mark)的算法。在一次洪水之后,当水最后 一次涨潮和

24、退潮时,高水位线显示了曾经达到的最高水位。 空的参数列表 返回一个 undef。 词法 (my)变量的说明 my 可以在任何块中 使用,而不仅仅在子例程中。例如可以在 if,while or foreach 中。 use strict pragma perl 是一种特别宽松的语言,但也许你想让 perl 把规则加强一些,这可以用 user strict pragma (编译指示)来安排。 pragma 中给编译器的提示,告诉它关代码的一些信息,这里, use strict pragma 是告诉 perl 编译器,它应该在本块或源文件的其余部份强制使用一些好的程序设计 规则。 return 操作

25、符 该操作符立即从子例程中返回一个值。 省略与字符 (&) 原则在除与内置函数名一致,其它子例程都可以省略与字符。 第五章 散列 (哈希 hash) 什么是散列? 散列( hash)是一个数据结构,与数组相同的是它可以含有任意数目的值并随意读取它们。 但与数组中由数字对值进行索引不同,散列用名字( name)查找值。也就是说,索引不再 是数字,而是任意的惟一字符串,称之为键( key)。它是一桶数据,不存在第一项,它是一 团糟的,随意的,没有固定的顺序。键总是被转成字符串,如用数值 50/20 做键,它就会被 变成“ 2.5”。 散列可以任意大小,从空散列直以填满内存。 在 perl中巨大的散列并不可怕,从三个和三百万个键值对中取出一个数的速度差不了多少。 为什么要用散列 你有一组数据与另外一组数据相关。 如 名 姓 主机名 ip 地址 ip 地址 主机名 单词 单词出现的次数 用户名 用户使用的硬盘块数 驾照号码 名字 如果你的任务描述中包含“找到重复项”,“唯一的”,“交叉引用”,或“查表”之类的词语, 那么散列就会在实现中很有用处。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。