globを使用してこのリンクを見ました
それは私がやりたいことではありません。
これが私の計画です。ディレクトリを検索して、文字列に部分的に一致するファイルを検索するには、関数にパラメーターとして指定し、/home/username/sampledata
その文字列をdata
.
サブディレクトリをチェックするかどうかを強制するフラグを実行時に含めるオプションをユーザーに提供します。現在、デフォルトでは、スクリプトにはサブディレクトリが含まれていません。
サブディレクトリを含むものの疑似コードは次のようになります。
ファイルパスを保存している配列はグローバルです
@fpaths;
foo($dir);
sub foo{
get a tmp array of all files
for ($i=0 ; $i<@tmp ; $i++) {
next if ( $tmp[$i]is a hidden file and !$hidden) ; #hidden is a flag too
if($tmp[$i] is file) {
push (@fpaths, $dir.$tmp[$i]);
}
if($tmp[$i] is dir) {
foo($dir.$tmp[$i]);
}
}
}
それはかなり堅実に見えます。
私が達成したいと思っているのは、保存された完全なパス名を持つすべてのファイルの配列です。
方法がわからない部分は、すべてのファイルのリストを取得することです。うまくいけば、これは glob で実行できます。
opendir
/を使用readdir
してすべてのファイルを読み取ることができましたが、結果がファイルかディレクトリかを確認する方法を知っていれば、これをもう一度行うことができました。
だから私の質問は:
パス名を使用
glob
してすべてのファイル/サブディレクトリの配列を取得する方法以前に見つかった配列の項目がディレクトリかファイルかを確認する方法
みんなありがとう