PERL编程24学时教程——09 其他函数和运算符.pdf
《PERL编程24学时教程——09 其他函数和运算符.pdf》由会员分享,可在线阅读,更多相关《PERL编程24学时教程——09 其他函数和运算符.pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下载第二部分高级特性第9学时其他函数和运算符第1 0学时文件与目录第11学时系统之间的互操作性第1 2学时使用P e r l的命令行工具第1 3学时引用与结构第1 4学时使用模块第1 5学时了解程序的运行性能第1 6学时Perl 语言开发界下载第9学时其他函数和运算符P e r l遵循的传统原则是“一件事情可以使用许多方法来完成”。在本学时中,我们将要更加深入地掌握这个原则。我们将要学习丰富多彩的新函数和运算符。为了进行标量搜索和操作,到现在为止我们一直使用正则表达式。不过我们可以使用多种方法来完成这项任务,P e r l提供了各种各样的函数,以便对标量进行搜索和编辑。在本学时中,我们将要介绍
2、其他的几种方法。另外,我们介绍了作为项目的线性列表的数组,你可以使用 f o r e a c h迭代通过这些列表,或者使用j o i n将它们组合起来,构成标量。在本学时中,我们将要介绍一种观察数组的全新方法。最后,我们要重新介绍一下常用的 p r i n t函数,并且给它增加一点特性。使用新的改进后的p r i n t函数,你就能够编写格式优美、适合向他人展示的报表。在本学时中,你将要学习:如何对标量进行简单的字符串搜索。如何进行字符替换。如何使用p r i n t函数。如何将数组用作堆栈和队列。9.1 搜索标量正则表达式非常适合对标量进行搜索,以便找出你要的模式,但是有时使用正则表达式来搜
3、索标量有点像杀鸡用牛刀的味道。在p e r l中,对模式进行组装,然后在标量中搜索该模式,需要花费一定的开销,不过这个开销并不大。另外,当你编写正则表达式时,很容易出错。为此,p e r l提供了若干个函数,用于对标量进行搜索,或者从标量中取出简单的信息。9.1.1 用index进行搜索如果你只想在另一个标量中搜索单个字符串,Pert提供了index函数。index函数的句法如下:i n d e x函数从s t r i n g的左边开始运行,并搜索 s u b s t r i n g。i n d e x返回找到s u b s t r i n g时所在的位置,o是指最左边的字符。如果没有找到 s
4、 u b s t r i n g,i n d e x便返回-1。被搜索的字符串可以是字符串直接量,可以是标量,也可以是能够返回字符串值的任何表达式。s u b s t r i n g不是一个正则表达式,它只是另一个标量。请记住,你编写的P e r t函数和运算符可以带有包含参数的括号,也可以不带。下面是一些例子:根据情况,可以给i n d e x函数规定一个字符串中开始进行搜索的起始位置,如下面的例子显示的那样。若要从左边开始搜索,使用的起始位置是 0:也可以使用带有起始位置的 i n d e x函数,以便“遍历”一个字符串,找到出现一个较短字符串的所有位置,如下所示:上面这个代码滑动通过s
5、o u r c e,如下所示:9.1.2 用rindex向后搜索函数r i n d e x的作用与i n d e x基本相同,不过它是从右向左进行搜索。它的句法如下所示:当搜索到结尾时,r i n d e x返回-1。下面是一些例子:用于i n d e x的遍历循环与使用r i n d e x进行向后搜索的循环略有不同。r i n d e x的起点必须从字符的结尾开始,或者从结尾的后面开始,(在下例中,从l e n g t h($s o u r c e)开始),但是,当返回-1时,它仍然应该结束运行。当找到每个字符串后,s t a r t必须递减1,而不是像i n d e x那样递增1。9.1
6、.3 用substr分割标量s u b s t r是个常常被忽略和很容易被遗忘的函数,不过它提供了一种从标量中取出信息并对标量进行编辑的通用方法。s u b s t r的句法如下:104使用第二部分高 级 特 性下载s u b s t r函数取出s t r i n g,从位置o ff s e t开始运行,并返回从o ff s e t到结尾的字符串的剩余部分。如果设定了l e n g t h,那么取出l e n g t h指明的字符,或者直到找出字符串的结尾,以先到者为准,如下例所示:如果o ff s e t设定为负值,s u b s t r函数将从右边开始计数。例如,s u b s t r($
7、a,-5)返回$a的最后5个字符。如果l e n g t h设定为负值,则s u b s t r返回从它的起点到字符串结尾的值,少于 l e n g t h指明的字符,如下例所示:在上面这个代码段中,s u b s t r从位置5开始运行,返回字符串的剩余部分,但不包含最后1 0个字符。你也可以使用赋值表达式左边的 s u b s t r函数。当用在左边时,s u b s t r用于指明标量中的什么字符将被替换。当用在赋值表达式的左边时,s u b s t r的第一个参数必须是个可以赋值的值,比如标量变量,而不应该是个字符串直接量。下面是使用 s u b s t r对字符串进行编辑的一个例子:
8、9.2 转换而不是替换下一个运算符是转换运算符(有时称为翻译运算符),它使我们想起正则表达式中的替换的操作方式。替换操作符的形式是 s/p a t t e r n/r e p t a c e m e n t/,在第6学时中我们已经作了介绍。除非你用连接运算符设定了另一个标量,否则该操作符将对 _变量进行操作。转换操作符的作用与它有些类似,不过它并不使用正则表达式,而且它的运行方式完全不同。转换操作符的句法如下所示:转换操作符t r/用于搜索一个字符串,找出s e a r c h l i s t中的各个元素,并用r e p l a c e m e n t l i s t中的对应元素对它们进行替换
9、。按照默认设置,转换操作符用于对变量 _进行搜索和修改。若要搜索和修改其他变量,你可以像使用正则表达式进行匹配操作那样,使用连接运算符,如下所示:字符的逻辑分组之间可以使用连字符。例如 AZ代表大写字母A到Z,这样你就不必将它们全部写出来,请看下例:如果r e p l a c e m e n t l i s t是空的,或者与s e a r c h l i s t相同,那么t r/将计算并返回匹配的字符。目第9学时 其他函数和运算符使用105下载标字符串并不被修改,如下例所示:最后要说明的是,由于历史的原因,t r/也可以写成y/,其结果相同,因为 y与t r同义。t r/运算符(和y/)也允许
10、你为s e a r c h l i s t和r e p l a c e m e n t l i s t设定另一组界限符。这些界限符可以是任何一组自然配对的字符,如括号或任何其他字符,请看下面的例子:t r/运算符实际上还具备另外一些功能,不过用得不多。若要了解 t r/能够执行的所有其他任务,请查看p e r l o p节中的在线文档。9.3 功能更强的print函数p r i n t函数是个非常简单的输出函数,它几乎不具备任何格式化功能。为了更具体地控制输出操作,如左对齐和右对齐,十进制精度,以及固定宽度的输出,你可以使用 P e r l的p r i n t f函数。p r i n t f函
11、数是从C编程语言那里借用的(几乎是原原本本的借用),不过其他编程语言也配有类似的函数,如B A S I C的print using函数。p r i n t f函数的句法如下:f o r m a t s t r i n g是一个描述输出格式的字符串,下面我们很快就要对它进行介绍。l i s t是一个你想让p r i n t f显示的值的列表,它类似 p r i n t语句中的l i s t。通常而言,p r i n t f将它的输出显示给S T D O U T文件句柄,但与p r i n t一样,如果你设定了一个文件句柄,那么 p r i n t f就使用该文件句柄。请注意,f i l e h
12、a n d l e名与f o r m a t s t r i n g之间不使用逗号。通常情况下f o r m a t s t r i n g是个字符串直接量,它也可以是一个用来描述输出格式的标量,f o r m a t s t r i n g中的每个字符均按其原义输出,但是以开头的字符则属例外。表示这是一个域说明符的开始。域说明符的格式是-w.d x,其中w是域需要的总宽度,d是小数点左边的位数(对于数字来说)和字符串域允许的总宽度,x表示输出的是数据类型。x说明符前面的连字符表示该域在 w字符中左对齐,否则它进行右对齐。只有和x是不可少的。表9-1列出了一些不同类型的域说明符。106使用第二
13、部分高 级 特 性减号(可有可无)域限定符标记域的总宽度(必须有)小数点后边的位数(可有可无)小数点(可有可无)域类型(必须有)表9-1 Printf函数的部分域说明符列表域类型含义c字符s字符串d十进制整数;截尾的小数f浮点数下载完整的域说明符列表请参见在线手册。你可以在命令提示符后面键入 perldoc-f printf,以查看该列表。下面是使用p r i n t f的一些例子:每个格式说明符均使用列表中的一个项目,如上所示。对于每个项目来说,都应该有一个格式说明符;对于每个格式说明符来说,都有一个列表元素:若要输出数字中的前导0,只需要在格式说明符中的宽度的前面设置 1个0,如下所示:s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PERL编程24学时教程09 其他函数和运算符 PERL 编程 24 学时 教程 09 其他 函数 运算
限制150内