2009-09-22 12 views
9

Bir glob'den döndürülen dosya adları dizisinin (ör. <*>) sıralanacağı garantisi var mı?Globbing sonuçlarının Perl'de sıralanacağına dair bir garanti var mı?

Bu sıralama, bir şekilde veya diğer in the documentation belirtildiğini bulamıyorum, ancak üzerinde çalıştığım her dizinde durum böyle görünüyor.

Bu sözdizimini kullanarak bahsediyorum

:

@files = <*>; 

ben sıralanmasını dosyaları gerekiyorsa

aşağıda gereksiz olurdu?

@files = sort(<*>); 
+0

's/$ dosya/dosyalar @ /'? Glob operatörü ve sort fonksiyonu listelerini döndürür. – mob

+1

@mobrule Teşekkürler, düzeltildi. Çalışmamın çoğunu PHP'de, tüm değişken türlerde $ kullanılır. : - [ – Kip

cevap

22
Perl 5.6.0 yılında

ve daha yeni, dosya adları sıralanır:

v5.6.0 başlayarak, bu operatör standart Dosya :: Glob uzatma kullanılarak uygulanır.

- Varsayılan olarak perldoc for glob

, yol adlarını ASCII artan düzende sıralanır. - perldoc for File::Glob

Having Varsayılan olarak

, dosya adları harf duyarlı

olmak varsayılır: -

perldoc for File::Glob

şu var ki bütün bunları söyledi, sen bunu değiştirebilirsin küresel 5.6.0 beri gereksiz olduğunu, ancak bu aynı zamanda eski sürümlerinde çalışacak: ehavior o

use File::Glob qw(:globally :nocase); 

Not harf duyarsız sıralamak.

Alternatif olarak, sadece küçük harf farkı olmaksızın tek bir topak yapmak istiyorsanız:

use File::Glob ':glob'; 

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

Teşekkürler, sanırım şu anda File :: Glob in dahili olarak kullanıldığını fark etmedim. – Kip

İlgili konular