[Perl] 使用 File::Find 列舉出目錄中所有的檔案
最近開始學習 Perl,首先的一個任務是列舉出目錄中的檔案,
並對檔案做一些處理…
看了一下,File::Find 套件可以輕鬆的完成這件事情(可以參考這裡的說明文件),
下面就簡單說明一下~
基本上只要準備一個陣列,儲存要搜尋的目錄路徑,再給它一個回呼函式就可以了~
像下面的程式會將 /boot, /home, /lib 三個目錄下的檔案都列舉出來~
use File::Find;
# Prepare folder paths
my @array_folder_path = (“/boot”, “/home”, “/lib”);
find(&find_file_callback, @array_folder_path);
sub find_file_callback
{
unless (–d)
{
print “———————————–n“;
print “$File::Find::dir=$File::Find::dirn“;
print “$File::Find::name=$File::Find::namen“;
print “$_=$_n“;
}
}
程式裡用到的 $File::Find::dir, $File::Find::name, 和 $_ 都會儲存跟這檔案相關的值,
直接看執行結果就十分明白了~
$File::Find::dir 儲存的是包含該檔案的目錄的絕對路徑,
$File::Find::name 儲存的是檔案的絕對路徑,
$_ 儲存的則是只有檔名的部分~
需要對列舉出來的檔案做處理的話,在回呼函式裡處理就可以囉~
若想連列舉出來的目錄也處理,只要把 unless (-d) 拿掉就可以了~~