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

サーバー内にある、拡張子が「html」または「cgi」のファイルを全て検索して配列に代入するにはどうすればいいのでしょうか。
サブディレクトリも全て検索します。

よろしくお願いします。

A 回答 (3件)

No.2の「/\.cgi|\.htm(l)?$/」は、「/\.cgi$|\.htm(l)?$/」です。


No.2だと、aaa.cgi.bbbのようなファイル名もOKになってしまいますね(汗
    • good
    • 0
この回答へのお礼

できました!
ファイル名は全てちゃんとした名前になってるのでたぶん大丈夫だと思います。
ありがとうございました!

お礼日時:2006/09/29 20:58

いろいろ、やりかたはあると思いますが、File::Findモジュールをつかったやりかたを紹介します。


他には、opendirなどの標準関数を使うやりかたもありますが、再帰処理をしたりとちょっと面倒になります。

#起点のディレクトリ
my $base_dir=".";

use File::Find;
my @files;

find(\&wanted, $base_dir);

print join("\n",@files);

sub wanted{
if($File::Find::name =~ /\.cgi|\.htm(l)?$/){
push(@files,$File::Find::name);
}
}
    • good
    • 1

ついこないだそのスクリプトを作ったのですが、長文になってしまうのでここには書けません。

とりあえず、

@files = sort(glob("*"));

とやればカレントディレクトリのファイル名(ディレクトリ名も)が全部@filesに入ります。あとはif (-f $file)でファイルを、if(-d $file)でファイルとディレクトリを判別、さらに拡張子を判別してprintすれば良いでしょう。子ディレクトリの調査は「リカーシブ処理」ということをやります。参考URLに記します。

参考URL:http://www.gihyo.co.jp/books/syoseki-contents.ph …

この回答への補足

すみません、補足です。
実行するCGIがpublic_html/module/
内にあるとして、
public_html/
から検索したいのですが、どうすればいいのでしょうか。
よろしくお願いします。

補足日時:2006/09/29 18:35
    • good
    • 0

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