標籤:
檔案測試主要用於查看如檔案是否存在、檔案大小、檔案更新時間等資訊。
檔案測試操作符
-e 測試檔案是否存在;
die "Oops!A file called ‘$filename‘ already exists.\n" if -e $filename;
-M 測試檔案是否保持持續的更新,比如測試某個程式的記錄檔是否保持每一周或兩周更新。
此處測試的是檔案控制代碼。
warn "Config file is looking pretty old!\n" if -M CONFIG>28;
-s 測試檔案的大小,以位元組計算檔案大小。
例子:下面測試的是檔案大小超過100位元組,且更新日期低於兩天的本檔案夾下的檔案。
#!/usr/bin/env perl
#filename:test2.pluse 5.010;while(<>){ if(/\A-.*/){ my @line=split /\s+/,"$&";# say "$line[8]"; say "$line[8]\tis bigger than 100bytes." if -s $line[8] > 100 and -M $line[8] > 2; }}
運行命令:ls -l | ./<filename>
如何查看檔案的大小(以M為單位):my size= (-s $filename)/1024;
注意一定要加括弧。
其他的檔案測試項
-r:檔案或目錄對此(有效)使用者(effective user)或組是可讀的-w:檔案或目錄對此(有效)使用者或組是可寫的-x:檔案或目錄對此(有效)使用者或組是可執行檔-o:檔案或目錄由本(有效)使用者所有-R:檔案或目錄對此使用者(real user)或組是可讀的-W:檔案或目錄對此使用者或組是可寫的-X:檔案或目錄對此使用者或組是可執行檔-O:檔案或目錄由本使用者所有-e:檔案或目錄名存在-z:檔案存在,大小為0(目錄恒為false)-s:檔案或目錄存在,大小大於0(值為檔案的大小,單位:位元組)-f:為普通文本-d:為目錄-l:為符號連結-S:為socket-p 為管道(Entry is a named pipe(a“fifo”))-b:為block-special 檔案(如掛載磁碟)-c:為character-special 檔案(如I/O 裝置)-u:setuid 的檔案或目錄-g:setgid 的檔案或目錄-k:File or directory has the sticky bit set-t:檔案控制代碼為TTY(系統函數isatty()的返回結果;不能對檔案名稱使用這個測試)-T:檔案有些像“文本”檔案-B:檔案有些像“二進位”檔案-M:修改的時間(單位:天)-A:訪問的時間(單位:天)-C:索引節點修改時間(單位:天)
測試同一個檔案的多項屬性
if(-r $file and -w _) # 虛擬檔案控制代碼_
{...}
棧式檔案操作符
use 5.010;
if( -r -w -x -o -d $file){
print "My directory is readable,writable,and executable!\n";
}
perl學習筆記——檔案測試