我编写了一个Perl脚本,它打开一个由各种文件组成的目录.似乎脚本不按任何顺序读取文件(既不按字母顺序也不按字母顺序),而是随机读取它们.我想知道背后的原因是什么?
Mar*_*las 11
它永远不是随机的,它只是一种你不认识的模式.如果你查看描述你用来读取目录的任何函数的实现的文档,它可能会说,不能保证要读取的文件的顺序.
如果您按特定顺序需要它们,请在操作之前对名称进行排序.
这些文件可能以便于底层文件系统的顺序读取.因此,从某种意义上说,文件是按顺序排序的,但不是按照您期望的顺序(大小或字母).有时,文件具有内部数字id,并且可以在给定此id的情况下以数字顺序返回文件.但这个id是你可能不会经常遇到的东西.
同样,结果是有序的,而不是随机的.他们只是按照你没想到的顺序.如果您需要订购,请明确订购.
另见:http://www.perlmonks.org/?node_id = 175864
Bla*_*rad 10
它可能是根据它们存储在目录文件列表中的顺序来读取它们.在某些类Unix文件系统上,该目录本质上是一个无序的文件名列表和指向内容的inode(这非常简化).