« [Perl]ディレクトリを再帰的にたどりファイル一覧を取得したい その1 | メイン | YouTubeのURLが入力されたら再生画面を表示させたい »

カテゴリー:ディレクトリ 

[Perl]ディレクトリを再帰的にたどりファイル一覧を取得したい その2

このエントリーを含むはてなブックマーク  livedoorクリップ  [Perl]ディレクトリを再帰的にたどりファイル一覧を取得したい その2をdel.icio.usに追加  [Perl]ディレクトリを再帰的にたどりファイル一覧を取得したい その2をYahoo!ブックマークに追加  [Perl]ディレクトリを再帰的にたどりファイル一覧を取得したい その2をニフティクリップに追加

以下のエントリーの続き。
今回は、PerlのFile::Findモジュールを利用した方法を解説する。

[Linux]ディレクトリを再帰的にたどりファイル一覧を取得したい
http://katsubemakito.net/cgiperl/2006/10/_perl_1.html

特定のディレクトリ配下を再帰的にたどりファイル一覧を表示などしたい。

階層の深さが決まっていればかんたんに取得できる方法もあるが、階層はまちまちで、今後もダイナミックに変化していく。このような場合にはどうすれば良いだろうか。

○File::Findモジュールを使用する

File::FindモジュールはPerlに標準で入っているため、通常はインストールの作業などはいらない。

;#
;#ファイル表示
;#

use File::Find;

#-- ディレクトリを指定(複数の指定可能) --#
@directories_to_search = ('./');

#-- 実行 --#
find(\&wanted, @directories_to_search);


#--------------------------------------------
#ファイルが見つかる度に呼び出される
#--------------------------------------------
sub wanted{
  print $File::Find::dir, '/';    #カレントディレクトリ
  print $_;          #ファイル名
  print "\n";

  #フルパスのファイル名
  #print $File::Find::name, "\n";
}

○実行結果


./.
./index.cgi
./define.pm
./dbdocs
./js
./js/index.js
./note
./note/index.cg
./note/add.cgi
./note/view.cgi
./note/del.cgi
./css
./css/view.css


File::Filndモジュールは、この他にハッシュ(連想配列)に実行結果を入れることができるなど、オプションも充実している。詳しくはドキュメントを読まれたい。

File::Find - Traverse a directory tree.
http://search.cpan.org/~nwclark/perl-5.8.7/lib/File/Find.pm





○関連
[Linux]ディレクトリを再帰的にたどりファイル一覧を取得したい
http://katsubemakito.net/cgiperl/2006/10/_perl_1.html

[Perl]ディレクトリを再帰的にたどりファイル一覧を取得したい その1
http://katsubemakito.net/cgiperl/2006/10/perl1.html




トラックバック

このエントリーのトラックバックURL:
http://katsubemakito.net/mt/mt-tb.cgi/331

この一覧は、次のエントリーを参照しています: [Perl]ディレクトリを再帰的にたどりファイル一覧を取得したい その2:

» [Linux]ディレクトリを再帰的にたどりファイル一覧を取得したい from CGI(Perl)例文集
特定のディレクトリ配下を再帰的にたどりファイル一覧を表示などしたい。 階層の深さ... [詳しくはこちら]

» [Perl]ディレクトリを再帰的にたどりファイル一覧を取得したい その1 from CGI(Perl)例文集
以下のエントリーの続き。 [Linux]ディレクトリを再帰的にたどりファイル一覧... [詳しくはこちら]

» File::Findでファイルを検索する from C-Note
まとめて処理したいときに便利。... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

VPSレンタルサーバー




クリエイティブ・コモンズ・ライセンス
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.