在Perl中,有三个系统定义的模式匹配变量,即你无须自己定义这些变量即可使用它们:
将这三个字符串按顺序连在一起,你总会得到原字符串:$`$&$'。
5.用s///进行替换
使用s///可以用一个替换字符串来替换一个变量匹配模式的部分,譬如:
6.大小写转换
在替换时,可能经常希望替换字符采用了合适的大写(或小写,依需要而定)。这很容易用Perl来完成,即通过一些反斜杠转义。
U转义符强制后面的字符都用大写,譬如:
L转义符强制后面的字符都用小写;
缺省情况下,U和L会影响其后的所有(替换)字符串,除非使用E关闭大小写转换,譬如:
当写成小写的形式时(l和u),它们只影响下一个字符,譬如:
7.split操作符
split操作符把一个字符串按照分割子(separator)分开。格式如下:
split操作符在字符串中用模式/separator/扫一遍,返回一个由分割子分割的字段(子字符串)的列表。每当模式匹配时,就是一个字段的结束和下一个字段的开始,因此,任何可以匹配模式的东西都不会出现在返回的字段中。譬如:
8.join函数
join函数完成split操作符相反的功能:split把一个字符串分成若干片段,而join则把一组片段粘合起来形成一个字符串。格式如下:
join的第一个参数是粘合串,它可以是任何字符串。另一个参数是由片段组成的一个列表,join把粘合字符串放在片段之间。譬如:
第十章 不常用的条件控制语句
第十一章 文件句柄和文件测试
本章介绍如何读写文件及测试文件的类型,是日常编程中重要的内容。
1.文件句柄的概念
文件句柄(filehandle)是Perl程序中的一个名字,表示你的Perl进程与外面世界的I/O连接。
也就是说,它是一个连接的名字,并不一定是一个文件的名字。
文件句柄
文件<====================>进程
2.文件句柄的命名
命令文件句柄的方式和其它Perl标识符一样(字母、数字和下划线,但不能以数字开始),
但文件句柄名没有前缀字符。为了避免和Perl的保留字(关键字)冲突,一般文件句柄名全部用大写字母。
3.打开一个文件句柄【or是否则的意思】
open MYFILE " > myfile" or die "Cannot Create myfile:$!";
其中,MYFILE是文件句柄名,myfile是实际的文件名,>表示向该文件中写入数据(<表示从该文件中读取数据,>>表示向该文件中追加数据);
若打开文件出错,会执行die语句,终止程序执行,并给出错误信息,$!用于给出错误信息。
4.关闭一个文件句柄
close MYFILE;
5.使用文件句柄
一旦打开了一个文件句柄,就可以读入行,像使用STDIN从标准输入读取一样,譬如:
一个为写入或追加而打开的文件句柄可以和print或printf一起使用,紧跟在其后但在参数列表之前:
6.文件测试
Perl有一组完整的测试,可以用它们了解文件的信息,譬如某个文件是否存在,是否可读、可写等。
所有的文件测试都有一个短横和一个字母,它们是测试的名字,后面是一个要测试的文件名或文件句柄,
一般会返回一个真/假值。用法如下:
if (-e $filename) {
...
}
常用的文件测试及它们的含义:
-r : 文件或目录对该用户或组可读
-w : 文件或目录对该用户或组可写
-x : 文件或目录对该用户或组可执行
-o :文件或目录被该用户所有
-e :文件或目录存在
-z :文件存在,大小为零(对目录总为假)
-s :文件或目录存在,大小非零(单位为字节)
-f :条目是个普通文件
-d :条目是个目录