檔案和目錄:
-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 否則返回...