[Perl] File::DirWalk

こんばんわ。昨日はスキーに行ったら、地震と雨にたたられたお爺さんです。
で、現在筋肉痛状態。。。
まあ、事故がなかっただけよしとしましょう。
さてお、本題はFile::DirWalkについて。今の所、File::Find::findと何が違うのか、さっぱりわかりません。若干使いやすくなっているようですが。

知ったきっかけ
 http://d.hatena.ne.jp/nekokak/20070324/1174746102

というわけで使ってみた。

CPANのページ
 http://search.cpan.org/dist/File-DirWalk/DirWalk.pm

サンプル


#!/usr/bin/perl

use File::DirWalk;

my $dw = new File::DirWalk;
$dw->onFile(sub {
my $file = shift @_;
print "$file\n";

return File::DirWalk::SUCCESS;
});

$dw->walk($ARGV[0]);

 

実行結果

[root@bglocal tmp]# perl dir.pl .
./address.pl
./b.pl
./head.pl
./uni.pl
./u2
./httpd.conf
GTop-0.16/mountlist.boot
GTop-0.16/blib/arch/auto/GTop/.exists
GTop-0.16/blib/man3/.exists
GTop-0.16/blib/lib/auto/GTop/.exists

という感じになります。

File::Find::findと違うのは、onXXXXが若干そろっていることでしょうか。少し組みやすい感じですが。。。ごにゃごにゃ処理をやってるせいで、速度はやっぱりFile::Find::findの方が上なのかなあと思いました。



[root@hoge tmp]# time perl dirwalk.pl /
real 0m6.088s
user 0m0.707s
sys 0m1.056s





[root@hoge tmp]# time perl filefind.pl /
real 0m4.540s
user 0m0.124s
sys 0m0.770s






filefind.pl - 完全に同じじゃないけど、ほぼ同じのハズ。。。


#!/usr/bin/perl
use File::Find;
find (sub {print "$File::Find::name\n" if -f},$ARGV[0]);




[root@hoge tmp]# perl dir2.pl / | wc
48492 48514 2165889


ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック