Perl ファイル一覧取得(再帰)

メモ

ファイル名だけが欲しい場合は、ここを
            push(@$files, $directory.$_);
こうする
            push(@$files, $_);
重複の排除は考えてない。

使用例

@files = GetFiles("./", 1);

関数

# ファイル一覧取得
sub GetFiles {
    # 引数を受け取る
    my ($directory, $recursive) = @_;

    # 処理関数を呼び出す
    my @files = ();
    GetFiles_($directory, $recursive, \@files);

    # ファイル一覧を返す
    return @files;
}

sub GetFiles_ {
    # 引数を受け取る
    my ($directory, $recursive, $files) = @_;

    # ディレクトリを開く
    opendir(D, $directory);

    # ファイルをリストに登録する
    foreach(readdir(D)) {
        # . と .. を無視する
        next if /^\.{1,2}$/;

        # ファイルの場合、リストに登録する
        if (-f $directory.$_) {
            push(@$files, $directory.$_);
        }

        # 再帰的に処理する場合
        if ($recursive) {
            # ディレクトリの場合、自身を呼び出す
            if (-d $directory.$_) {
                GetFiles_($directory.$_."/", $recursive, $files);
            }
        }
    }

    # ディレクトリを閉じる
    closedir(D);
}

  • 最終更新:2013-06-09 17:57:08

このWIKIを編集するにはパスワード入力が必要です

認証パスワード