大多數程序都不是孤立的,它們與它們的環境相互作用。很多的程序也需要通過文件操作實現數據的存貯和交換。 文件句柄(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目錄"。
(http://www.fanqiang.com)
進入【UNIX論壇】
|