当我使用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);
我用perl 5.8.2在AIX中,如果它的确与众不同 – BrianH 2009-01-12 17:23:06
我知道这是一个简单的脚本,但是你可以发布您的代码,所以我们不必重现它? – 2009-01-12 17:24:52
process_dir之前的&符号不是必需的,并且在某些情况下可能有害。我会建议你删除它。 – 2009-01-12 19:13:35