- ベストアンサー
サーバー内にある指定した拡張子のファイル名を取得するには
サーバー内にある、拡張子が「.html」であるファイル名を 配列に格納したいのですが、ルート以外のほかのディレクトリに入っているファイルは、 例えばhttp://***.jp/cgi-bin/に入っているファイルは cgi-bin/index.html のように、ディレクトリの名前も含めて格納したいんです。 どうすればいいのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そのまま、実行できるのであれば @array=glob("cgi-bin/*.html"); とすれば、ディレクトリ名も含めてリストになります。 ディレクトリの階層が違って @array=glob("*.html"); とした後に、ディレクトリ名を付加する必要があるなら @array=glob("*.html"); @array=map('cgi-bin/' . $_, @array); とします。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#2> \nは、要らんかったね^^; あと、必ずしも配下にない飛び飛びのディレクトリの場合 (".")の部分を ("bin-cgi", "image")とかディレクトリの並び(リスト)にすればいいです。
お礼
あ!締め切るの忘れてました^^; 追記ありがとうございますm(_ _)m
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>サーバー内にあるすべてのhtmlファイルを取得し、そのhtmlファイルが格納されているディレクトリ名を自動的に付加することってできませんか? 適当なディレクトリ以下のファイルを検索するには、 File::Find (標準モジュール)を使うと便利です。 例えば、"."(現在のディレクトリ)以下の拡張子が.htmlのファイルを配列に格納するには、 use File::Find; @array=(); find sub { if($File::Find::name =~/\.html$/){ push(@array,"$File::Find::name\n") ; }}, ("."); のようにします。 この場合は、各ファイルの先頭に "./" ('.'以下のファイルなので)が付きますが、 sub で取り除く(あるいはマッチングで)ことができます。
お礼
わかりやすい説明で、無事思い通りにできました。 ありがとうございました。
補足
ありがとうございます。 要望なのですが、サーバー内にあるすべてのhtmlファイルを取得し、 そのhtmlファイルが格納されているディレクトリ名を自動的に付加することってできませんか? よろしくお願いします。