Perl でopendir
, readdir
, およびを使用してディレクトリを読み取るとclosedir
、readdir
関数は特定の順序でファイルを読み取るようには見えません (私にはわかります)。
エポックタイムスタンプで名前が付けられたサブディレクトリを持つディレクトリを読んでいます:
1224161460
1228324260
1229698140
これらのディレクトリを番号順に読みたいと思います。これにより、最も古いディレクトリが最初になります。
を使用するreaddir
と、最初に読み取られるのは 1228324260 で、これが真ん中です。ディレクトリの内容を配列に入れて並べ替えることができることは知っていますがreaddir
、並べ替えられた順序で読み取るために渡すことができるオプションはありますか? それとも、すべてを配列にプッシュして配列をソートするよりも、これを達成するためのよりエレガントな方法でしょうか? おそらくこれを行うためのモジュールもありますが、私たちの環境にモジュールをインストールするのは難しいので、組み込みモジュールでない限り、モジュールを使用したくない...
ありがとう!
編集 要求に応じて、使用しているコードを投稿しています:
opendir( my $data_dh, $data_dir ) or die "Cannot open $data_dir\n";
while ( my $name = readdir($data_dh) ) {
next if ( $name eq '.' or $name eq '..' );
my $full_path = "${data_dir}/${name}";
next unless ( -d $full_path );
process_dir($full_path);
}
closedir($data_dh);