11

glob(例)から返されるファイル名の配列がソートされるという保証はあります<*>か?

ドキュメントでソートが何らかの形で言及されていることはわかりませんが、私が試したすべてのディレクトリに当てはまるようです。

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

@files = <*>;

ファイルを並べ替える必要がある場合、以下は冗長ですか?

@files = sort(<*>);
4

1 に答える 1

24

Perl 5.6.0以降では、ファイル名は次のようにソートされます。

v5.6.0以降、この演算子は標準のFile::Glob拡張機能を使用して実装されています。

--globのperldoc

デフォルトでは、パス名はASCIIの昇順でソートされます。

--File ::Globのperldoc

1つのキャッチがあります:

デフォルトでは、ファイル名は大文字と小文字が区別されると見なされます

--File ::Globのperldoc

そうは言っても、この動作を変更して、大文字と小文字を区別せずに並べ替えることができます。

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

:globallyは5.6.0以降冗長ですが、これは古いバージョンでも機能することに注意してください。

または、大文字と小文字を区別せずに単一のグロブを実行する場合は、次のようにします。

use File::Glob ':glob';

@files = bsd_glob('*', GLOB_NOCASE);
于 2009-09-22T18:06:23.963 に答える