当我在 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);