perl 檔案和目錄

2021-07-02 00:33:55 字數 4268 閱讀 8880

檔案和目錄:

-xfilehandle/expr/dirhandle 

檔案測試:

-r         file                              檔案對當前有效使用者或組可讀

-w       file                              檔案對當前有效使用者或組可寫

-x         file                              檔案對當前有效使用者或組可執行

-o     file                            檔案對當前有效使用者或組擁有

-r        file                              檔案對當前實際使用者或組可讀

-w      file                              檔案對當前實際使用者或組可寫

-x        file                              檔案對當前實際使用者或組可執行

-o     file                            檔案對當前實際使用者或組擁有

-z     file            檔案存在且沒有內容

-s     file              檔案存在且有內容,返回檔案大小的位元組數。

-f         fiel                  指定file是否為常規檔案

-d        file                  檔案存在並且是目錄

-l   file         檔案是軟連線(符號鏈結)      

-b    file                    檔案存在且是塊裝置

-c    file                    檔案存在且是字元裝置

-p    file                   檔案存在並且是管道

-s     file                 檔案存在並且是socket

-u    file                   檔案設定了setuid位

-g     file                  檔案設定了setgid位

-k  file        檔案設定了粘滯位

-t       file                 檔案控制代碼是tty裝置

-t   file             看起來像文字檔案         

-b   file              看起來像二進位制檔案

-m    file            最有一次修改後至今的天數

-a   file              最後一次訪問後至今的天數

-c   file               最後一次檔案節點變更至今的天數

多個測試:

and             用來測試多個條件與

or                用來測試多個條件或

_                  特殊字元表示虛擬檔案控制代碼,告訴perl使用上次查詢過的檔案資訊來做當前的測試。

if   (-r  $file   and   -w  _)

棧式檔案測試:

適用於使用返回值為真假的情況。

返回數值的不要使用。

use   5.010

if (-w   -r  $file)

檔案控制代碼:

perl保留的六個檔案控制代碼:

stdin\stdout\stderr

data\argv\argvout

open函式:開啟控制代碼

檔案控制代碼使用大寫表示。

open    fh, 」filename」;    #建立檔案控制代碼

open    fh, 「< filename」;/open fh, 「<」, 「filename」;    #建立輸入檔案控制代碼

open    fh, 「> filename」;/open fh, 「>」, 「filename」;    #建立輸出檔案控制代碼

open    fh, 「>>  filename」;/open fh, 「>>」,「filename」;    #建立輸出檔案的追加控制代碼

處理開啟控制代碼出錯:

my $res = open fh,「>>   filename」;

if (! $res)

open   fh, 「filename」

or  die   「cat not open file :$ ! 」;

使用檔案控制代碼:

表示行輸入操作符,每次讀取一行。

while ()

print  fh  …;    #輸出到輸出檔案控制代碼指向的檔案。

printf    fh   …;    #不用括號也可以

printf  fh (…);    #檔案控制代碼在括號外也可以

printf  (fh …);    #檔案控制代碼在括號內也可以

statfilehandle/expr/dirhandle:

返回包含13個數字元素的列表:

my($dev-裝置編號, $ino-inode編號, $mode-檔案許可權位集合, $nlink-硬鏈結數, $uid,$gid, $rdev,$size-檔案位元組數,$atime, $mtime, $ctime, $blksize, $blocks) = stat($filename);

$n = (stat($filename))[n];

lstatexpr/filehandle/dirhandle:

和stat一樣,但是用於符號鏈結,返回符號鏈結本身的資訊,符號鏈結使用stat返回的是原始檔的資訊.

chdirexpr/filehandle/dirhandle:

預設切換到$home。

globexpr:

進行模糊匹配,支援*,多個用空格隔開。

my  @files = glob 「*」;

perl   name.pl  *.ext           #命令列通配,shell會匹配*.ext然後傳給perl程式。

my @files = <*>;       #使用<>進行通配,和glob一樣。

unlinklist:

刪除檔案,成功返回刪除的檔案數量.

刪除硬連線和軟連線(並非符號鏈結指向的東西)

unlink   glob  「*.bak」;

renameoldname, newname:

重新命名檔案。

linkoldfile, newfile

建立硬連線

symlinkoldfile,newfile

建立軟連線

readlinkexpr

返回符號鏈結指向的位置

mkdirfilename,[mask]

建立目錄

mkdir   $filename,0755;   #使用八進位制

mkdir   $filename,  oct($perm);

rmdirfilename

刪除空目錄,如果是非空目錄,需要先用unlink清空再刪除。

opendir

readdir

telldir

rewinddir

seekdir

closedir

chmodlist:

更改檔案或目錄許可權

chmod   0755, $filename1, $filename2, …;

chomd   oct($mode);

chownlist:

更改檔案或目錄屬主和屬組

chown    $uid,$gid, $filename, …;

chroot

umask

utime

fcntl

ioctl

Perl檔案及目錄操作

大多數程式都不是孤立的,它們與它們的環境相互作用。很多的程式也需要通過檔案操作實現資料的存貯和交換。檔案控制代碼 file handle 是perl程式中為程式和外部世界提供i o連線的名稱。建議全部使用大寫字母以示與變數等的區別。特別地,也可以將tdin stdout stderr也認為是perl...

Perl遍歷目錄

環境為windos,需要注意的兩點 1 預設activeperl下的採用的編碼是gbk,所以需要將字串轉為gbk才不會顯示亂碼 2 遍歷檔案目錄時,需要排除特殊的目錄.和.完整的 usr bin perl 2 use strict 3 use warnings 4 use encode qw fro...

Perl中檔案與目錄的操作

1,刪除檔案 unlink 如成功返回刪除的檔案數 true 否則返回0 false 如 unlink test.txt unlink test1.txt test2.txt unlink rm test txt under shell2,重新命名檔案 rename 如成功返回真 true 否則返回...