dポイントプレゼントキャンペーン実施中!

サーバー内にある、拡張子が「.html」であるファイル名を
配列に格納したいのですが、ルート以外のほかのディレクトリに入っているファイルは、
例えばhttp://***.jp/cgi-bin/に入っているファイルは
cgi-bin/index.html
のように、ディレクトリの名前も含めて格納したいんです。
どうすればいいのでしょうか?
よろしくお願いします。

A 回答 (3件)

そのまま、実行できるのであれば


@array=glob("cgi-bin/*.html");
とすれば、ディレクトリ名も含めてリストになります。
ディレクトリの階層が違って
@array=glob("*.html");
とした後に、ディレクトリ名を付加する必要があるなら
@array=glob("*.html");
@array=map('cgi-bin/' . $_, @array);
とします。

この回答への補足

ありがとうございます。

要望なのですが、サーバー内にあるすべてのhtmlファイルを取得し、
そのhtmlファイルが格納されているディレクトリ名を自動的に付加することってできませんか?

よろしくお願いします。

補足日時:2006/02/18 13:02
    • good
    • 0

#2>


\nは、要らんかったね^^;
あと、必ずしも配下にない飛び飛びのディレクトリの場合
(".")の部分を
("bin-cgi", "image")とかディレクトリの並び(リスト)にすればいいです。
    • good
    • 0
この回答へのお礼

あ!締め切るの忘れてました^^;
追記ありがとうございますm(_ _)m

お礼日時:2006/02/22 22:56

>サーバー内にあるすべてのhtmlファイルを取得し、そのhtmlファイルが格納されているディレクトリ名を自動的に付加することってできませんか?


適当なディレクトリ以下のファイルを検索するには、
File::Find (標準モジュール)を使うと便利です。
例えば、"."(現在のディレクトリ)以下の拡張子が.htmlのファイルを配列に格納するには、
use File::Find;
@array=();
find sub { if($File::Find::name =~/\.html$/){ push(@array,"$File::Find::name\n") ; }}, (".");
のようにします。
この場合は、各ファイルの先頭に
"./" ('.'以下のファイルなので)が付きますが、
sub で取り除く(あるいはマッチングで)ことができます。
    • good
    • 0
この回答へのお礼

わかりやすい説明で、無事思い通りにできました。
ありがとうございました。

お礼日時:2006/02/18 15:26

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