top
Loading...
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/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目錄"。
北斗有巢氏 有巢氏北斗