为什么Perl脚本以随机顺序从目录中读取文件?

shu*_*ter 1 directory perl

我编写了一个Perl脚本,它打开一个由各种文件组成的目录.似乎脚本不按任何顺序读取文件(既不按字母顺序也不按字母顺序),而是随机读取它们.我想知道背后的原因是什么?

Mar*_*las 11

它永远不是随机的,它只是一种你不认识的模式.如果你查看描述你用来读取目录的任何函数的实现的文档,它可能会说,不能保证要读取的文件的顺序.

如果您按特定顺序需要它们,请在操作之前对名称进行排序.

这些文件可能以便于底层文件系统的顺序读取.因此,从某种意义上说,文件是按顺序排序的,但不是按照您期望的顺序(大小或字母).有时,文件具有内部数字id,并且可以在给定此id的情况下以数字顺序返回文件.但这个id是你可能不会经常遇到的东西.

同样,结果是有序的,而不是随机的.他们只是按照你没想到的顺序.如果您需要订购,请明确订购.

另见:http://www.perlmonks.org/?node_id = 175864


Bla*_*rad 10

它可能是根据它们存储在目录文件列表中的顺序来读取它们.在某些类Unix文件系统上,该目录本质上是一个无序的文件名列表和指向内容的inode(这非常简化).

  • 有些编辑甚至会让您编辑作为目录的文件,尽管您必须了解结构才能看到它所说的内容.:) (3认同)