http://www.blogjava.net/weidagang2046/articles/61995.html
大多数程序都不是孤立的,它们与它们的环境相互作用。很多的程序也需要通过文件操作实现数据的存贮和交换。?文件句柄(file?handle)是Perl程序中为程序和外部世界提供I/O连接的名称。建议全部使用大写字母以示与变量等的区别。特别地,也可以将STDIN/STDOUT/STDERR也认为?是Perl的文件句柄,分别代表标准输入/标准输出/标准错误输出。??
打开及关闭文件??
Perl的文件操作与C语言极为相似。如:??
open(FILENAME,"abc.txt");??
该调用为读文件打开,若为写文件而打开,需在文件名前加上大于号:??
open(FILENAME,">abc.txt");??
若要追加至文件尾,可在文件名前加上两个大于号:??
open(FILENAME,">>abc.txt");??
以上三种open()格式在成功时返回真,失败时返回假。但程序中通常没有提示,出错时往往会被人们忽略。?通常当需要给出出错提示时,可加入die()函数。例:??
open(OUTFILE,">/tmp/outfile")||??
die?"出错,不能建立/tmp/outfilen";??
当只有open失败时,才会执行die给出出错提示。??
对文件句柄的操作完成后,可以用close操作符关闭文件。如:??
close(OUTFILE);??
-x?文件测试??
Perl的文件操作也可以先测试文件是否存在,是否可读写等。如:??
$x="abc.txt";??
if(-e?$x)?{?#abc.txt是否存在???
#?存在操作??
}?else?{??
printf?"文件不存在。n";??
}??
-e操作符测试文件或目录是否存在。??
以下为文件测试清单:??
文件测试?测试操作符提供的信息??
-r?文件或目录可读??
-w?文件或目录可写??
-x?文件或目录执行??
-o?文件或目录归用户所有??
-R?文件或目录对真正用户可读??
-W?文件或目录对真正用户可写??
-X?文件或目录对真正用户执行??
-O?文件或目录归真正用户所有??
-e?文件或目录存在??
-z?文件存在且大小为0??
-s?文件或目录存在且不为0(返回字节数)??
-f?文件为普通文件??
-d?文件为目录??
-l?文件为符号链接??
-p?文件为命名管道(FIFO)??
-S?文件为一个套口(socket)??
-b?文件为块特殊文件??
-c?文件为字符特殊文件??
-t?打开tty控制台的文件句柄??
-u?文件或目录是设置用户ID号??
-g?文件或目录是设置用户组ID号??
-k?文件或目录的sticky位置位??
-T?文件是文本文件??
-B?文件是二进制文件??
-M?以天为单位的存在时间??
-A?以天为单位访问时间??
-C?以天为单位同代码更改时间??
删除文件??
Perl的unlink()操作符可实现删除文件。如:??
unlink("abc.txt");?#删除abc.txt??
文件重命名??
Perl的rename()操作符可实现文件重命名。如:??
rename("abc","zmd")||die?"出错,不能更名";??
此时将abc更名为zmd,成功返回真,否则给出出错提示。??
目录操作??
Perl中处理目录非常类似于处理文件。??
打开目录句柄:??
opendir(ETC,"/etc")||die?"出错,不能打开目录";??
关闭目录句柄:??
closedir(ETC);??
创建目录:??
mkdir("zmd",0777)||die?"不能创建zmd目录";??
0777为内部权限格式。??
删除目录:??
rmdir("zmd")||die?"不能删除zmd目录"。