http://perl-mongers.org/2008/05/opendirglobfilefindrule.html
これまでは、ファイルを探す際、File::Findを使って再帰的に処理していましたが、
glob()、またはFile::Find::Ruleを使うといいかも
http://search.cpan.org/perldoc?File::Find::Rule
以前、ファイル探索を実装した際は、File::Findを使って次のように書いていました。
この書き方では、globalな@SHARED_LISTに探索結果を格納する為、本来?のFile::Findの使い方とは異なると思います。
use File::Find; my @SHARED_LIST = (); #送信対象のfile,dir一覧 my $LOCAL_DIR; #送信対象となるlocal dir sub sync_shared_dir { my ($self,$ftp,$local_dir) = @_; #find()から呼ばれるwanted()に引数を渡せないようなので $LOCAL_DIR = $local_dir; #shared dir以下のfile,dir一覧を作成 @SHARED_LIST = (); find( \&wanted, "$local_dir/$CONF->{baitai}->{shared_dir}"); } sub wanted { $File::Find::name =~ s/^$LOCAL_DIR\///; #開発環境において、.svnがある場合、ftpの送信対象にはしません if ( $File::Find::name =~ /\/\.svn$/o or $File::Find::name =~ /\/\.svn\//o){ return undef; } push(@SHARED_LIST,$File::Find::name); }
そんな時に見かけたのが次のurl.
http://perl-mongers.org/2008/05/opendirglobfilefindrule.html
なるほど