<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:"/@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1593833729 1073750107 16 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:宋体;}
h2
{mso-style-next:Normal;
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:2;
font-size:14.0pt;
font-family:Arial;
font-style:italic;}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{color:navy;
text-decoration:underline;
text-underline:single;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
Perl文件及目录操作
大多数程序都不是孤立的
,
它们与它们的环境相互作
用。很多的程序也需要通过文件操作实现数据的存贮和交换。
文件句柄
(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/outfile/n";
当只有
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
目录
"
。