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目錄"。
打開及關閉文件?
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目錄"。
posted on 2006-08-05 22:09 weidagang2046 閱讀(17687) 評論(1) 編輯 收藏 所屬分類: Perl