大多数程序都不是孤立的,它们与它们的环境相互作用。很多的程序也需要通过文件操作实现数据的存贮和交换。 文件句柄(file handle)是
Perl程序中为程序和外部世界提供I/O连接的名称。建议全部使用大写字母以示与变量等的区别。特别地,也可以将STDIN/STDOUT/STDERR也认为 是Perl的文件句柄,分别代表标准输入/标准输出/标准错误输出。
51Testing软件测试网O@-V%F4F(t8S打开及关闭文件
51Testing软件测试网z:p4kZ/?0@V r~ Perl的文件操作与C语言极为相似。如:
51Testing软件测试网w&];Yo?_,hnjopen(FILENAME,"abc.txt");
51Testing软件测试网/g
pg] U
iUb 该调用为读文件打开,若为写文件而打开,需在文件名前加上大于号:
51Testing软件测试网#|f7x1m,?A7ou].Sopen(FILENAME,">abc.txt");
$UFr1q}G0 若要追加至文件尾,可在文件名前加上两个大于号:
b/Z6K+x$dy i0open(FILENAME,">>abc.txt");
JcpHc2d
KVIu0 以上三种open()格式在成功时返回真,失败时返回假。但程序中通常没有提示,出错时往往会被人们忽略。 通常当需要给出出错提示时,可加入die()函数。例:
0b(vg?#fNl3b
bV0open(OUTFILE,">/tmp/outfile")||
51Testing软件测试网 Op7Q@kdie "出错,不能建立/tmp/outfile\n";
0i{]
^8N0 当只有open失败时,才会执行die给出出错提示。
f3o
`8aeX;kz(i,N
]s0 对文件句柄的操作完成后,可以用close操作符关闭文件。如:
^3M't#D7W MNQ)g0close(OUTFILE);
0B#m'V4e;{0-x 文件测试
mM h'SN4Yw0 Perl的文件操作也可以先
测试文件是否存在,是否可读写等。如:
AE:N~B c^C$qs0$x="abc.txt";
V'_pI0?:|:y8c6`,m&Z0if(-e $x) { #abc.txt是否存在?
m_V4st9P,Sz0# 存在操作
51Testing软件测试网"cpdtmff)ZN1Y} else {
T r(W {9mx}0printf "文件不存在。\n";
g3j-I)^'JPb~~x0}
51Testing软件测试网8^/p;g;\
v/J-e操作符测试文件或目录是否存在。
51Testing软件测试网AG/Wu2N:Du | Us!o 以下为文件测试清单:
{!_p1A:Z4Ih
]0文件测试 测试操作符提供的信息
51Testing软件测试网d3Zi I5K-r 文件或目录可读
51Testing软件测试网+|4hs{?-w 文件或目录可写
51Testing软件测试网u+`/nLN b4T {
eq3Y)X-x 文件或目录执行
qK)S9A El?f"\0-o 文件或目录归用户所有
51Testing软件测试网.bO$Ws%x'x0[C-R 文件或目录对真正用户可读
51Testing软件测试网I0rsWJ-W 文件或目录对真正用户可写
51Testing软件测试网4`:oj Y+EYm1l*oaG-X 文件或目录对真正用户执行
51Testing软件测试网
J B[,k_-O 文件或目录归真正用户所有
T{_\
YF0-e 文件或目录存在
51Testing软件测试网.f-ohS^O7Bbm-z 文件存在且大小为0
51Testing软件测试网p j n\"Y-s 文件或目录存在且不为0(返回字节数)
ek%AAU$kC0-f 文件为普通文件
51Testing软件测试网^#x1zx0Ka{f-d 文件为目录
H(loB7@0-l 文件为符号链接
51Testing软件测试网5}*x2g-WV0d-p 文件为命名管道(FIFO)
a8QD,d{eY7D0-S 文件为一个套口(socket)
51Testing软件测试网0l%X5r4ex&b
o1@^-b 文件为块特殊文件
j0B.qL4\8V(fe0-c 文件为字符特殊文件
\X1j!Oj8{ Zq0-t 打开tty控制台的文件句柄
51Testing软件测试网xGt!_b,ib-u 文件或目录是设置用户ID号
#| D/G} B8r}3y}0-g 文件或目录是设置用户组ID号
B,?}d7|0-k 文件或目录的sticky位置位
j!PbRWs
lZC0-T 文件是文本文件
51Testing软件测试网%m MTS7Ak-B 文件是二进制文件
51Testing软件测试网ZKhGa4G {8w-M 以天为单位的存在时间
51Testing软件测试网)A3JB1|A"{FX-A 以天为单位访问时间
51Testing软件测试网S+_a"AH*['M2D6}Y3e-C 以天为单位同代码更改时间
/y{Y_"A&Fn8cR;CM&G0删除文件
51Testing软件测试网
tA2@ V3e:v/| Perl的unlink()操作符可实现删除文件。如:
:k#KT'km0O0unlink("abc.txt"); #删除abc.txt
51Testing软件测试网C
hJ
B2I(UO文件重命名
Pb
Kn!mo.j0 Perl的rename()操作符可实现文件重命名。如:
|M
?-{
g
D?$h2Qf0rename("abc","zmd")||die "出错,不能更名";
51Testing软件测试网'U8~ Z/c%N _
r(} 此时将abc更名为zmd,成功返回真,否则给出出错提示。
51Testing软件测试网G]gNp4S1ag目录操作
&J,qNQ2tEC$J8t0 Perl中处理目录非常类似于处理文件。
&F.[8^tS0 打开目录句柄:
51Testing软件测试网|*iA"AO:gKopendir(ETC,"/etc")||die "出错,不能打开目录";
51Testing软件测试网 B;CfN?eT 关闭目录句柄:
H8cdy'X'aL0closedir(ETC);
51Testing软件测试网2d2KJ%C{;|z!R 创建目录:
\?0w-z(Z;\s0mkdir("zmd",0777)||die "不能创建zmd目录";
[rx)a }V6l+l9k0 0777为内部权限格式。
51Testing软件测试网:eP D9{/Z 删除目录:
0e;dXfQd0rmdir("zmd")||die "不能删除zmd目录"。