#! /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; #ディレクトリの一覧を返却する }