- ベストアンサー
ディレクトリ内の全ファイルをオープンする方法
特定のディレクトリ内に存在する全てのファイルを順次オープン・クローズするプログラムを作成したいと思います。 例えば、特定のディレクトリに下記のファイルがあるとします。 A.txt B.txt このときにA.txtをオープンし内容を読み込みクローズし、次にB.txtを同じようにオープンし内容を読み込んでクローズするプログラムです。内容を読み込んで処理する部分は問題なく、また上記のように存在するファイルが決まっていれば何も問題はないのですが、下記の場合にはどのように存在するファイルを探せばよいのかがわかりません。 ・何ファイルあるかわからない ・存在するファイルは必ずテキスト ・ファイル名は決まっていない(perlで問題なく読み込めるファイル長) なお、特定のディレクトリに存在するファイルを順次全て読み込めればよいので、その読み込む順番にこだわりはありません。 どうぞよろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そのディレクトリを $dir として opendir(DIR, $dir); for my $file (readdir(DIR)) { unless ($file eq '.' || $file eq '..') { $file = "$dir/$file"; open(FILE, $file); FILE から読み込む close(FILE); } } closedir(DIR); くらいかなぁ.
その他の回答 (2)
- guci-ok
- ベストアンサー率33% (49/146)
# File::Slurpを使って、 use File::Slurp; for (read_dir('/path/to/dir')) { my @lines = read_file($_); ... }
お礼
File::Slurpを使ったやり方は はじめてみました。 ご回答ありがとうございます。 後で確認してみます。
- okiyoshi
- ベストアンサー率34% (11/32)
# glob を使って、 foreach my $file ( grep -f, glob( "$dir/*" ) ) { open FH, $file or die( "can't open $file" ); # 処理 close FH; }
お礼
globを使用することで簡易に表現できるのですね。 ご回答ありがとうございます。
お礼
さっそくのご回答ありがとうございます。 確認してみます。