6.10 目錄處理

以下這個例子(dir.pl)可以將指定的目錄及其下所有子目錄、檔案走訪一次。欲處理的目錄,可在命令列中指定。


用法:

./dir.pl

或 

./dir.pl /home/jack

====================

#! /usr/bin/perl

use File::Find; # 指揮 perl 至 perl 的主要目錄下尋找 File/Find.pm 這個
                # 模組,引入使用! 其中 :: 相當於 / 這個符號。

$index=1;

# 路徑設定
my $dir=shift || '/home/ols3';

my $tmp="dirlist.txt";

# 開啟記錄暫存檔
open(W, "> $tmp") || die "$!\n";

# 走訪該目錄
find(\&doit, $dir);

close(W);


# 動作區
sub doit {
	print_process_status($index);
	print W "$File::Find::name\n";
	$index++;
}

sub print_process_status {
    my $i=shift;
    my $j = $i % 4;
    SWITCH : {
	$j == 0 && do { print STDERR " (|)\r";  last SWITCH; };
	$j == 1 && do { print STDERR " (/)\r";  last SWITCH; };
	$j == 2 && do { print STDERR " (-)\r";  last SWITCH; };
	$j == 3 && do { print STDERR " (\\)\r"; last SWITCH; };
    }
}