2009-09-22 2 views
9

glob에서 반환 된 파일 이름 배열 (예 : <*>)이 정렬 될 것이라는 보장이 있습니까?globbing 결과가 Perl로 정렬된다는 보장이 있습니까?

정렬이 편도 또는 다른 in the documentation으로 언급되어 있지만 내가 사용 해본 모든 디렉토리의 경우 인 것 같습니다.

나는이 구문을 사용하여에 대해서 이야기하고

:

@files = <*>; 

I 정렬 할 파일이 필요한 경우

에서, 아래 중복 것입니까?

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

's의/$ 파일/파일 @ /'? glob 연산자와 sort 함수는리스트를 반환합니다. – mob

+1

@mobrule thanks, fixed. PHP로 모든 작업을 수행합니다. $는 모든 변수 유형에 사용됩니다. : - [ – Kip

답변

22
펄 5.6.0에서

및 최신은 파일 이름이 정렬됩니다

가 v5.6.0부터이 연산자 표준 파일 :: 글롭 확장자를 사용하여 구현됩니다.

- 기본적으로 perldoc for glob

, 경로 이름은 ASCII 순서를 오름차순으로 를 분류되어 있습니다. - perldoc for File::Glob

갖는 기본적으로

파일 이름은 대소 문자를

수 로 가정한다 : -

perldoc for File::Glob

하나의 캐치있다 너는 이것을 모두 바꿀 수 있다고 말했다. 전 세계적으로 5.6.0 이후 중복이지만,이뿐만 아니라 이전 버전에서 작동합니다 : ehavior 것을

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

참고로 대문자와 소문자를 구별하지 않고로 정렬합니다.

또는, 당신은 그냥 케이스 - 무감각과 함께 하나의 글로브를 수행하려는 경우 :

use File::Glob ':glob'; 

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

감사합니다. File :: Glob에 대해 조금도 신경 쓰지 않았던 것 같습니다. 지금 내부적으로 사용 중입니다. – Kip