有没有保证会在Perl中对globbing的结果进行排序?

时间:2009-09-22 17:50:13

标签: perl sorting glob

是否可以保证从glob(例如<*>)返回的文件名数组将被排序?

我发现排序是以某种方式提到的in the documentation,但在我尝试过的每个目录中似乎都是这种情况。

我在谈论使用这种语法:

@files = <*>;

如果我需要对文件进行排序,那么下面是多余的吗?

@files = sort(<*>);

1 个答案:

答案 0 :(得分:23)

在Perl 5.6.0及更高版本中,文件名已排序:

  

从v5.6.0开始,此运算符   是使用标准实现的   File :: Glob扩展名。

- perldoc for glob

  

默认情况下,路径名已排序   按ASCII顺序递增。

- perldoc for File::Glob

有一个问题:

  

默认情况下,假定文件名为   区分大小写

- perldoc for File::Glob

说了这么多,你可以改变这种行为,用

不区分大小写
use File::Glob qw(:globally :nocase);

请注意:自5.6.0以来全局冗余,但这也适用于旧版本。

或者,如果你只想做一个不区分大小写的glob:

use File::Glob ':glob';

@files = bsd_glob('*', GLOB_NOCASE);