檔案與目錄處理

# 檔案與目錄處理
# (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`;

繼續閱讀:Perl 程式設計教學