#! /usr/local/bin/perl
##ルート以下のディレクトリを検索し表示するプログラム
print "Content-type: text/html\n\n";
#[設定]検索する最初のディレクトリ(ルートディレクトリ)を設定してください。
$default_dir='../../../gallery/materials';
### メイン処理 ##
# ディレクトリ一覧を取得
@dirs=search($default_dir);
# ルートディレクトリ表示
print"ルートディレクトリの値 >> $default_dir
\n";
# ディレクトリ一覧表示
foreach $_(@dirs){
print "ルート有==>ルート無 >> $_ "; ## ルートディレクトリつき
$_ =~ s/$default_dir//;
print " ==> $_
\n"; ##ルートディレクトリ除去後
}
exit(0);
### 引数配下のディレクトリを検索し、 ###
### その直下のディレクトリ一覧を返却するサブ関数 ###
sub search{
local($dir)=@_; #引数を取得する
local($tmp_dir,@ret,@files); #ローカル変数を宣言する
opendir(D,$dir); #ディレクトリをオープンする
@files=readdir(D); #ディレクトリの読込を行う
close(D);
foreach $_(@files){
#現在のディレクトリ「.」と親ディレクトリ「..」は読みとばす
if ( $_ ne "." && $_ ne ".." ){
$tmp_dir = $dir."/".$_; #引数/ファイル名 の形式に編集 (例)ファイル名がiconの場合[../../../gallery/materials/icon]
#ディレクトリかどうかを判断する
if(-d $tmp_dir){
push(@ret, $tmp_dir); # @ret の後ろに $tmp_dir の値を追加する
push(@ret,search($tmp_dir)); # $tmp_dirを引数としてsearch関数を呼び出し @ret の後ろに 返却値を追加する。
}
}
}
return @ret; #ディレクトリの一覧を返却する
}