Perl學習筆記 5

2021-09-25 21:02:26 字數 3457 閱讀 8993

獲得幫助

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...