如何在同一目录中多次有效地使用Perl的readdir?

Jin*_*Jin 2 directory perl

我有一个使用Perl的readdir()的问题.我想收集目录中具有我指定的相同前缀文件名的所有文件.因此,对于每个前缀,我需要使用Perl的readdir()来grep所有相关文件.

假设前缀为"abc",有几个文件名为"abc_1","abc_2"等.

但是,我注意到如果我将opendir,closedir放在循环之外(循环遍历文件名前缀列表),我只能从dir中插入第一个前缀 - 以下所有grepping都失败了.如果我选择在循环中每次调用opendir和closedir,它工作正常,但我担心它根本没有效率.

我的问题是如何才能提高效率?奇怪的是我无法在循环中多次调用readdir.

非常感谢提前!

-斤

Mic*_*man 8

目录(和文件)句柄是迭代器.从一个读取消耗数据,您需要存储该数据或重置迭代器的位置.关闭和重新开放是艰难的方式; 使用rewinddir来代替.

或者,用glob一步完成阅读和过滤.


jam*_*san 6

为什么不一次读取所有文件,然后在该列表上执行过滤?