標籤:
十一、檔案測試
-op expr if(-e “filea”){print STDERR(“file1/n”):} 檔案是否存在.
-b是否為塊裝置 -c是否為字元裝置
-d是否為目錄 -e檔案是否存在
-f是否為普通檔案 -g是否設定了setgid位
-k是否設定了sticky位 -l是否為符號串連
-o是否擁有該檔案 -p是否為管道
-r是否可讀 -s是否非空
-t是否表示終端 -u是否設定setuid位
-w是否可寫 -x是否可執行 -z是否為空白檔案
-A距上次訪問多長時間
-B是否為二進位檔案
-C距上次訪問檔案的inode多長時間
-M距上次修改多長的時間
-O是否只為”真正的使用者”所擁有
-R是否只有”真正的使用者”可讀
-S是否為socket -T是否為文字檔
-W是否只有”真正的使用者”可寫
-X是否只有”真正的使用者”可執行
-s返迴文件長度,-A-C-M返回的天數.
十二、檔案狀態
stat(file):參數可為檔案名稱,也可為檔案控制代碼,返迴文件狀態的列表。
編號 名字 unix windows
0 dev 裝置號 c:=2,d:=3
1 ino 索引節點 總是0
2 mode 模式 無
3 nlink 連結號 0
4 uid 檔案所有者 0
5 gid 檔案組 0
6 rdev 特殊檔案資訊,裝置類型 磁碟機代號
7 size 檔案大小 檔案大小
8 atime 上次訪問時間 上次訪問時間
9 mtime 上次修改時間 上次修改時間
10 ctime inode修改時間 檔案建立時間
11 blksz 磁碟塊大小 0
12 Blocks 檔案的塊數 0
utime(acctime,modtime,filelist):修改時間戳記,修改訪問時間,返回成功修改的檔案數.
十三、檔案操作
Glob:
@a=glob(“*.txt”)返回與模式比對的所有檔案目錄,如果賦值給簡單變數則一次返回一個檔案。
參數可以是檔案名稱或目錄.
只能接受有限的檔案數,報檔案太多錯誤,用shell來執行。
因為用shell來解釋執行,故運行速度慢。
另一種形式是@a=<*.txt>是古老的用法,推薦用glob.
truncate(file,lenght):將檔案的長度減少到length位元組,如果檔案長度已經小於length,
則不做任何事.其中filename可以為檔案名稱,也可以為檔案變數.
rename(old,new)成功=1 可以從一個目錄移動到另一個目錄,不檢查new是否存在,可能破壞檔案.
-e “file2″||rename(file1,file2) 先檢查再移動
十四、檔案連結
link(檔案名稱,連結名)
建立現有檔案的連結-永久連結,file是被連結的檔案,newlink是被建立的連結。
成功返回真,失敗返回假.
當刪除這兩個連結中的一個時,還可以用另一個來訪問該檔案。
synlink符號連結(檔案名稱,連結名)建立現有檔案的符號連結,即指向檔案名稱,而不是指向
檔案本身,當原檔案被刪除(如:被unlinke函數刪除),則被建立連結不可用,除非再建立
一個與原被連結的檔案同名的檔案.
Readlink(linkname)跟蹤符號連結,如果linkname為符號連結檔案,返回其實際指向的檔案。
否則返回空串。
unlink(filelist)=成功刪除的檔案數,刪除檔案或$_中的檔案,參數為檔案名稱列表,傳回值為
實際刪除的檔案數目.
此函數之所以叫unlink而不叫delete是因為它實際所做的是刪除檔案的連結。
十五、目錄操作
opendir(dirvar,dirname) 開啟目錄,查看某目錄中檔案清單時也要先開啟,再操作,再關閉,
參數為:
dirvar:目錄變數,dirname:目錄名,成功返回真值,失敗返回假。
closedir(dir):關閉目錄
readdir(dir):對數組返回所有檔案和目錄,對簡單變數每次返回一個檔案或目錄,不含當前路徑。
chdir(dir):改變目錄,運行完返回原目錄,成功為真,失敗為假.
telldir(dir):目前的目錄位置
seekdir(dir,loc):到指定位置
rewinddir(dir):目錄位置指向目錄第一項.
mkdir(dirname,permission):建立目錄(目前的目錄,存取權限)
rmdir(dirname):只能刪除空目錄,成功則返回真,失敗返回假.
十六、小結
1.概念:描述符,控制代碼,緩衝,訪問模式,許可權,檔案狀態.
2.檔案訪問:開啟,關閉,讀,寫,隨機訪問
3.檔案操作:測試,改名,截取,連結.
4.目錄操作:同檔案.
5.相關技術:錯誤函數及變數,檔案開啟函數,命令列參數,glob的擴充.
Perl學習筆記(九)--檔案(四)