是否可以保证从glob(例如<*>
)返回的文件名数组将被排序?
我发现排序是以某种方式提到的in the documentation,但在我尝试过的每个目录中似乎都是这种情况。
我在谈论使用这种语法:
@files = <*>;
如果我需要对文件进行排序,那么下面是多余的吗?
@files = sort(<*>);
答案 0 :(得分:23)
在Perl 5.6.0及更高版本中,文件名已排序:
从v5.6.0开始,此运算符 是使用标准实现的 File :: Glob扩展名。
默认情况下,路径名已排序 按ASCII顺序递增。
有一个问题:
默认情况下,假定文件名为 区分大小写
说了这么多,你可以改变这种行为,用
不区分大小写use File::Glob qw(:globally :nocase);
请注意:自5.6.0以来全局冗余,但这也适用于旧版本。
或者,如果你只想做一个不区分大小写的glob:
use File::Glob ':glob';
@files = bsd_glob('*', GLOB_NOCASE);