« 論理的でも非論理的でも良い | メイン | 眠いのだか眠くないのだか »

2007年03月25日

任意のディレクトリ以下のファイル一覧

テンプレートファイルの読み込みのために作った関数。指定したディレクトリ以下のファイルパスを配列として取り出す関数です。

use File::Find;

sub find_file {
    my ($dir) = @_;
    my @filelist;

    find(
        sub {
            unless (/^\./si) {
                if (-f $File::Find::name) {
                    push @filelist, $File::Find::name;
                }
            }
        },
        $dir
    );

    return @filelist;
}

ドット . で始まるファイル(ディレクトリ)は除外しています。

最初は、自前で再帰処理も加えていました。関数 find は、ちゃんと再帰処理をしてくれる実装でした。重複するパスが多くておかしいと思ってましたよ。再帰処理をしないんだったら opendir で書けば良いですしね…。

未だに OOP で Perl を書かないのは、既に旧人類でしょうか?

2007年03月25日 19:51 | Programming

トラックバック

コメント