2007年7月9日星期一

《Learning Perl》学习笔记 -- 其余几章

第十三章 处理文件和目录
介绍如何删除文件、重命名文件、链接和文件、建立和删除目录等。比较有用的是介绍了File::Basename(用来获得文件的基名和目录名)和File::Spec模块(用来处理文件规范)。使用命令perldoc File::Basename获得模块的使用方法。
模块声明:在程序的顶部附近通过use命令来声明它
use File::Basename;
在编译的时候,Perl看到这行,就会将这个模块装载进来。

以下四章对我来说有些深奥了,没有仔细研究,以后如果用到,再好好看看:
第十四章 进程管理
第十五章 字符串和排序
第十六章 简单数据库
第十七章 一些高级Perl技术


《Learning Perl》学习笔记 -- 第十二章 目录操作

本章介绍如何改变目录树,如何使用目录句柄以读取目录中的文件列表等。

1.改变目录树
chdir操作符可以改变工作目录。就像Unix中shell的cd命令:
chdir "/etc" or die "can not chdir to /etc:$!";
2.目录句柄
可以使用目录句柄(directory handle)来指定目录的文件列表。目录句柄在外表和操作方式上都很像文件句柄,你可以打开它(opendir)、读取它(readdir)还可以关闭它(closedir)。不过与读出文件的内容不同的是,你读出来的是目录中的文件(和其它东西)的名字。譬如:
my $mydir = "/etc";
opendir MYDIR, $mydir or die "Can not open $mydir:$!";
foreach $file (readdir MYDIR) {
print "one file in $mydir is $filen";
}

这里需要注意的一点是readdir操作符返回的文件名没有路径名部分,它仅仅是目录内的名字。因此,在上例中,对于/etc/passwd,$file的值为passwd而不是/etc/passwd。所以,需要我们自己把名字补齐来以得到全名:
my $mydir = "/etc";
opendir MYDIR, $mydir or die "Can not open $mydir:$!";
while (my $name = readdir MYDIR) {
next if $name =~ /^./; #跳过以点开头的文件
$name = "$mydir/$name"; #补上路径
next unless -f $name and -r $name; #只要可读文件
...
}

《Learning Perl》学习笔记 -- 第十一章 文件句柄和文件测试

本章介绍如何读写文件及测试文件的类型,是日常编程中重要的内容。

1.文件句柄的概念
文件句柄(filehandle)是Perl程序中的一个名字,表示你的Perl进程与外面世界的I/O连接。也就是说,它是一个连接的名字,并不一定是一个文件的名字。
文件句柄
文件<====================>进程
2.文件句柄的命名
命令文件句柄的方式和其它Perl标识符一样(字母、数字和下划线,但不能以数字开始),但文件句柄名没有前缀字符。为了避免和Perl的保留字(关键字)冲突,一般文件句柄名全部用大写字母。
3.打开一个文件句柄
open MYFILE " > myfile" or die "Cannot Create myfile:$!";
其中,MYFILE是文件句柄名,myfile是实际的文件名,>表示向该文件中写入数据(<表示从该文件中读取数据,>>表示向该文件中追加数据);若打开文件出错,会执行die语句,终止程序执行,并给出错误信息,$!用于给出错误信息。
4.关闭一个文件句柄
close MYFILE;
5.使用文件句柄
一旦打开了一个文件句柄,就可以读入行,像使用STDIN从标准输入读取一样,譬如:
open MYFILE " > myfile" or die "Cannot Create myfile:$!";
while (<MYFILE>) {
...
}
一个为写入或追加而打开的文件句柄可以和print或printf一起使用,紧跟在其后但在参数列表之前:
print LOG "Captain's log, stardate 3.14159n"; # 输出到LOG
print STDERR "%d percent complete.n", $done/$total*100;
6.文件测试
Perl有一组完整的测试,可以用它们了解文件的信息,譬如某个文件是否存在,是否可读、可写等。所有的文件测试都有一个短横和一个字母,它们是测试的名字,后面是一个要测试的文件名或文件句柄,一般会返回一个真/假值。用法如下:
if (-e $filename) {
...
}
常用的文件测试及它们的含义:
-r : 文件或目录对该用户或组可读
-w : 文件或目录对该用户或组可写
-x : 文件或目录对该用户或组可执行
-o :文件或目录被该用户所有
-e :文件或目录存在
-z :文件存在,大小为零(对目录总为假)
-s :文件或目录存在,大小非零(单位为字节)

-f :条目是个普通文件

-d :条目是个目录
-l :条目是个符号链接

2007年7月6日星期五

《Learning Perl》学习笔记 -- 第十章 更多的控制结构

本章介绍了一些不常用的控制结构,在日常编程中基本上都不会用到,下面介绍几个可能用到的控制结构。

1.elsif子句
if (...) {
}
elsif (...) {
}
else {
}
2.for控制结构
和C语言中的类似
for (initialization;test;increment) {
...
}