这个问题是从这个问题中分拆出来的.一些历史:当我第一次学习Perl时,我总是使用glob而不是opendir+ readdir因为我发现它更容易.后来各种帖子和读物表明这glob很糟糕,所以现在我几乎总是使用readdir.
在思考了这个最近的问题之后,我意识到我选择其中一个或另一个选择的理由可能是无聊的.所以,我将列出一些优点和缺点,我希望更有经验的Perl人可以插入并澄清.概括地说,问题是有没有令人信服的理由,更喜欢glob到readdir或readdir到glob(在某些或所有情况下)?
glob 优点:glob与readdir没有比赛,如果我们的名字单独判断)(从ysth的回答;参见glob下面的参考资料4)可以返回不存在的文件名:
@deck = glob "{A,K,Q,J,10,9,8,7,6,5,4,3,2}{\x{2660},\x{2665},\x{2666},\x{2663}}";
Run Code Online (Sandbox Code Playgroud)glob 缺点:stat每次调用(即stat在大多数情况下无用).(来自brian的回答)可以返回不存在的文件名:
$ perl -le 'print glob "{ab}{cd}"'
Run Code Online (Sandbox Code Playgroud)readdir 优点:opendir返回一个文件句柄,你可以在你的程序中传递(并重用),但glob只返回一个列表readdir是正确的迭代器,并提供功能rewinddir,seekdir,telldirglob特征进行纯粹的猜测.无论如何,我并不是真的担心这种优化水平,但它是理论专家.)glob?0 …