#----------------------#
# ファイル一覧の取得 #
#----------------------#
sub GetFilelist {
# 引数の取得、変数の準備
my ($dir, $extension, $swich) = @_;
my ($temp, $file, $e, $n, @filelist);
my $i = 0;
# 複数指定の拡張子を分割
@ext = split(/\//, $extension);
# ディレクトリを開く
opendir (DIR , $dir) || return false;
# ディレクトリにあるファイル等を1つずつ抽出
while ($file = readdir DIR) {
# ゴミをはじく
if ($file =~ /^\.{1,2}$/) {
next;
} else {
# 大文字小文字の判定
if ($swich == 1) {
$temp = lc($file);
foreach (@ext) {
$_ = lc($_);
}
} else {
$temp = $file;
}
# ファイルが指定拡張子と合致するかを拡張子毎にチェック
foreach $e (@ext) {
# 拡張子が指定されていて且つ、ワイルドカードではない
if ($e && $e ne ".[*]") {
# 拡張子以外の文字列に引っかからないための措置
if (index($temp, $e, length($temp) - length($e)) != -1) {
$filelist[$i] = $file;
$i++;
# ヒットしたら次のファイルへ
last;
} else {
# ヒットしないため別の拡張子へ
next;
}
} else {
# ワイルドカードを指定された時
if ($e eq ".[*]") {
if ($file =~/\./) {
$filelist[$i] = $file;
$i++;
last;
}
} else {
# 拡張子の指定がない時
$filelist[$i] = $file;
$i++;
last;
}
}
}
}
}
closedir(DIR) ;
# 結果としてファイル一覧を返す
return @filelist;
}
*テスト用にTXTファイル、JPEGファイル、HTMLファイルがありますがいずれも0byteのファイルです。
*ファイルは拡張子で判断するので、拡張子のないファイルは探せません。
*サーバーが落ちている場合が多々あります。