加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何按排序顺序读取目录中的文件?

发布时间:2020-12-15 21:39:09 所属栏目:大数据 来源:网络整理
导读:当我使用opendir,readdir和closedir读取Perl中的目录时,readdir函数似乎没有按任何特定顺序读取文件(我可以告诉). 我正在读一个目录,其中包含以epoch timestamp命名的子目录: 122416146012283242601229698140 我想以数字顺序读取这些目录,这将把最旧的目录
当我使用opendir,readdir和closedir读取Perl中的目录时,readdir函数似乎没有按任何特定顺序读取文件(我可以告诉).

我正在读一个目录,其中包含以epoch timestamp命名的子目录:

1224161460
1228324260
1229698140

我想以数字顺序读取这些目录,这将把最旧的目录放在第一位.

当我使用readdir时,它读取的第一个是1228324260,这是中间的.我知道我可以将目录内容放在一个数组中并对数组进行排序,但是有一个选项可以传递给readdir以按排序顺序读取吗?或者可能是一种更优雅的方式来实现这一点,而不是将所有东西都推入数组并对数组进可能还有模块可以做到这一点,但很难在我们的环境中安装模块,所以除非它是内置模块,否则我宁愿不使用模块……

谢谢!

编辑
根据要求,我发布了我正在使用的代码:

opendir( my $data_dh,$data_dir ) or die "Cannot open $data_dirn";
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);

解决方法

readdir可以在数组上下文中调用,所以只需这样做:
opendir( my $data_dh,$data_dir) or die "Cannot open $data_dirn";
my @files = sort { $a <=> $b } readdir($data_dh);
while ( my $name = shift @files ) {
...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读