2009-09-22 14 views
9

globから返されたファイル名の配列(たとえば<*>)がソートされる保証はありますか?globの結果がPerlでソートされる保証はありますか?

並べ替えが片方向または他の方法で言及されているのがわかりませんin the documentationしかし、私が試したすべてのディレクトリの場合のようです。

私はこの構文を使用して話している:

@files = <*>; 

私は、ファイルをソートする必要がある場合は、以下の冗長でしょうか?

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

'ファイル@ S/$ファイル/ /'? glob演算子とsort関数はリストを返します。 – mob

+1

@mobruleありがとう、固定。私はすべての変数型で$が使われるPHPで私の仕事のほとんどを行います。 : - [ – Kip

答えて

22
のPerl 5.6.0では

以降は、ファイル名がソートされています

は、v5.6.0から、この演算子 は標準 ファイル::グロブ拡張子を使用して実装されています。

- デフォルトでperldoc for glob

、パス名は、ASCII昇順に をソートされています。 - perldoc for File::Glob

持つデフォルトで

は、ファイル名は大文字と小文字を区別し

こと に仮定されている: -

perldoc for File::Glob

1つのキャッチがありますあなたはこれを変えることができますグローバル5.6.0以降冗長ですが、これは、同様の古いバージョンで動作します:ehaviorこと

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

注意して大文字と小文字を区別せずにソートします。

代わりに、あなただけの場合、不感受性を持つ単一のグロブをしたい場合:

use File::Glob ':glob'; 

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

ありがとう、私は、File :: Globについて内部的に使用されていることに気付かなかったと思います – Kip

関連する問題