獲得幫助
perldoc -f -e
測試應用
#-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 返回檔案的位元組大小 -a 檔案最後一次訪問到當前時刻的天數
#使用and連線多項測試
foreach
my$filename
(@original_files)if
(-r$file
and-w
$file
)
常用檔案測試符
檔案測試符
說明-r
檔案或目錄,對當前使用者/組是可讀的
-w檔案或目錄,對當前使用者/組是可寫的
-x檔案或目錄,對當前使用者/組是可執行的
-o檔案或目錄,由當前使用者所擁有
-r檔案或目錄,對實際的使用者或組可讀
-w檔案或目錄,對實際的使用者或組可讀
-x檔案或目錄,對實際的使用者或組可執行
-o檔案或目錄,由實際使用者所擁有
-e檔案或目錄是存在的
-z檔案為空
-s返回檔案的位元組數
-f是普通檔案
-d是目錄
-l是符號鏈結
-s是socket型別檔案
-p是命名管道
-b是塊裝置
-c是字元裝置檔案
-u設定了suid
-g設定了sgid
-k設定了sticky-bit
-t是tty裝置
-t看起來像文字檔案
-b看起來像二進位制檔案
-m最後一次修改到今天的天數
-a最後一次訪問到今天的天數
-c最後一次inode被修改到今天的天數
注:當前使用者/組指當前執行程式的人。
測試統一檔案的多項屬性
「 _ 」 虛擬檔案控制代碼,它會告訴perl用上次查詢過的檔案資訊來做當前測試。這樣只需要查詢一次檔案資訊即可。
if(-r
$file
and-w_)
或者if(-r
$file)if
(-w_)
或者採用棧式檔案測試if(
-w-r
-x-o
-d$file)if
((-d$file
and-s_)
<
512)
或者if(-d
$file
and-s
_<
512)
cd
chdir '/etc/'
ordie
"can't cd to /etc/: $!"
;
檔名展開
shell中有
$ echo *.pl
test1.pl test2.pl test3.pl test4.pl
在perl中使用glob會產生相同效果。
my
@pm_files
=glob '*.pm'
;
目錄控制代碼
目錄控制代碼操作得到的是目錄中的檔案。
my
$dir_to_process
='/etc'
;opendir my
$dh,
$dir_to_process
ordie
"can't open $dir_to_process: $!"
;foreach
$file
(readdir $dh
)closedir $dh
;
也可以將$dh換成裸字「 dir 」作為目錄控制代碼。
新建目錄
mkdir 'fred'
,0755
or warn "can't create fred dir: $!\n"
;mkdir $name
, oct(
$perms
);
刪除目錄
刪除空目錄
rmdir $temp_dir
;
完整方案參考file::path模組。
刪除檔案
unlink 'file1'
,'file2'
,'file3';或者
unlink qw( file1, file2, file3 )
;
刪除多個檔案
#unlink返回成功刪除的檔案數
unlink glob '*.o';或者
foreach
my$file
(qw(file1 file2 file3)
)
注意:刪除檔案的許可權和檔案本身的許可權無關,它取決於檔案所在目錄的許可權。
重新命名檔案
rename 'old'
,'new'
;#這裡的,可以替換為=>
這裡rename功能和shell的mv命令功能相同。
乙個例子
foreach
my$file
(glob "*.old"
)elsif
(rename $file
=>
$newfile
)else
}
pid檔案
perl會將程序的pid存入「 $$ 」預設變數中。
修改許可權
chmod 0755
,'fred'
,'barney'
;
修改隸屬關係
my
$user
=1004;my
$group
=100;或者
defined(
my$user
=getpwnam 'user1')or
die'bad user'
;defined(
my$group
=getgrnam 'group1')or
die'bad group'
;chown $user
,$group
, glob '*.o'
;
defined函式用於檢查返回值不是undef。 Perl學習筆記 5
1.關於檔案控制代碼 open 可以用 open 函式建立用於不同用途 輸入,輸出,管道 的檔案控制代碼。open sesame,filename 從現存盤案中讀取 open sesame,一樣的東西,明確地做 open sesame,filename 建立檔案並寫入 open sesame,fil...
perl學習筆記 5
雜湊列表和普通列表的差別是 雜湊列表的索引是有業務含義的,普通列表的索引是數字。根據索引從雜湊列表中獲取資訊的速度很快。雜湊列表變數用 開頭。雜湊列表鍵值不能重複,如果重複,後面的值會覆蓋前面的值。這一特性善加利用可用於統計單詞出現的頻率。測試雜湊列表中是否存在某元素,不能用if hash 應該用i...
perl學習筆記 5
雜湊列表和普通列表的差別是 雜湊列表的索引是有業務含義的,普通列表的索引是數字。根據索引從雜湊列表中獲取資訊的速度很快。雜湊列表變數用 開頭。雜湊列表鍵值不能重複,如果重複,後面的值會覆蓋前面的值。這一特性善加利用可用於統計單詞出現的頻率。測試雜湊列表中是否存在某元素,不能用if hash 應該用i...