檔案與目錄處理#
# 檔案與目錄處理
# (1) 檔案測試算符
$filename = "data.txt";
if(-e $filename){ # 測試檔案是否存在
print "$filename exists.\n";
}else{
print "$filename does not exist.\n";
}
# 其他算符請參考 perlfunc(1)
# (2) glob
# 把現行目錄下所有 .txt 檔之檔名存入 @allfile
# 與 shell 下用法相同
@allfile = glob "*.txt";
# 另一種寫法,等同於 @allfile = glob "*.txt";
@allfile = <*.txt>;
@etcfile = </etc/*.conf>; # 可加入路徑
# 抓取所有 .txt 與 .conf 檔
@files = <*.txt *.conf>;
# (3) 目錄代碼 (directory handle)
# (A)
$dir = "/etc";
opendir DIR, $dir;
while($file = readdir DIR){
# 印出 /etc 下所有檔案與目錄
# 包含 '.' '..' 與 '.' 開頭之隱藏檔
print "$file\n";
}
closedir DIR;
# (B)
$dir = "/etc";
opendir DIR, $dir;
# 將 /etc 下所有檔案與目錄存入 @etc_all_file
@etc_all_file = readdir DIR;
closedir DIR;
# (4) 基本檔案目錄處理
rename "file1.txt", "file2.txt";
mkdir "mydir",0755;
rmdir "mydir";
chmod 0755, "file1","file2";
# 其他
# (1) @ARGV:取用 script 指令列參數
print "\$ARGV[$_] = $ARGV[$_]\n" for 0 .. $#ARGV;
# (2) system:執行子行程
system("date"); # 執行 date 程式
system("ls -al");
# (3)``:擷取輸出結果
# 擷取 date 之輸出,存入 $output
$output = `date`;
$output2 = `ls -al`;