アプリ版:「スタンプのみでお礼する」機能のリリースについて

Perlでtreeコマンドのような指定したディレクトリ以下の
ディレクトリツリーを表示(取得)するモジュールなどはないでしょうか。

CPANから探してみたのですが英語の上に実行サンプルが載って
いなかったりと該当するものかどうかの判断ができません。

名前や説明から該当しそうな(?)Perlモジュール
・Dir::Which
・File::CheckTree
・File:Find
・File::Path
・File::Searcher
・Tree::File
など

因みに、環境非依存にしたいのでexecやバッククオートを使用したりは
できません。

A 回答 (2件)

確かにいっぱいおかしかったので修正:


sub treelist_ {
my ($dir, $lv) = @_;
opendir my $dh, $dir;
my @files = grep { $_ !~ /^\.\.?$/; } readdir $dh;
closedir $dh;
for my $file (@files) {
print ">" x $lv, "$dir/$file\n";
treelist_("$dir/$file", $lv+1) if -d "$dir/$file";
}
}
sub tree {
for my $dir (@_) {
print "$dir\n";
treelist_($dir, 0);
}
}
tree('.');
これでどうだ.
    • good
    • 0
この回答へのお礼

お、動きました。
ありがとうございます。
あとは、自分で頑張ってみます。

お礼日時:2008/08/05 23:53

使ったことはないんですが, ちょっと CPAN をあさってみたら File::Find::Node あたりが使えそうな気もします.


ま~, ぶっちゃけ言ってしまうと「努力と根性」だけでもなんとかなるんですが....
sub treelist_ {
my ($dir, $lv) = @_;
opendir my $dh, $dir;
my @files = grep { $_ !~ /^\.\.?$/; } readdir $dh;
closedir $dh;
my $file (@files) {
print ">" x $lv, "$file\n";
treelist_("$dir/$file", $lv+1) if -d "$dir/$file");
}
}
sub tree {
for my $dir (@_) {
print "$dir\n";
treelist_($dir, 0);
}
という感じでも, それなりになんとかなるだろうし.

この回答への補足

どうもありがとうございます。

なんか上記のサンプルに所々、(記述の)誤りがあったようなので
修正して実行してみたのですがそれでもうまく動かないようです。
もう少し内容を調査して調べてみます。

補足日時:2008/08/03 10:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!