2013-08-04 1 views
0
-e File exists. 

디렉토리가 존재합니까? 나는 그것을 보지 않았기 때문에 http://perldoc.perl.org/functions/-X.htmlPerl 디렉토리는 -e의 동등한 존재합니다

또는 그것을 테스트하는 가장 좋은 방법은 무엇입니까?

next unless (-e $dir . "/dirname");    -e only for file so doesnt work 

나는 잔인한 것 때문에이 dirname을 찾을 수 opendir and grep 일을 피하기 위해 노력하고 있습니다.

업데이트 된 질문 :
가 perl concat $ dir입니다. -e 또는 -d 검사를 수행하기 전에 "/ dirname"을?

+4

-d 플래그는 또한 -X' -f'perldoc을 읽을 할 수 있습니다 당신이 –

+1

찾고있는 것입니다. –

+1

혼란스러워 보입니다. '-e'는 인수가 있는지 여부를 알려줍니다. 그것의 inode 타입을 조사하지는 않는다. – tchrist

답변

8

-d 테스트를 사용하여 지정된 경로가 디렉토리인지 확인하십시오. 이 경우 -e의 존재 여부를 테스트하기 때문에 어떤 것이 파일 시스템 객체이기 때문에 true를 반환합니다.

경로가 일반 파일 (디렉토리가없고 기호 링크도없고 특수 파일도 없음)을 가리키는 지 확인하려면 -f을 사용하십시오.

그래서 당신이 원하는 :

-d "$dir/dirname" or next; 
+0

'-e'는 유닉스와 비슷한 (그리고 윈도우와 비슷한) 시스템의 디렉토리에 대해서는 사실이지만 모든 플랫폼에 대해 보장되는가요? –

+0

필자는 강력하게 의심하고 perlport에서 항목을 찾을 수 없습니다. 그냥 내 말을 인용하지 마라. (그러나, 나는 다른 무엇이'-e'가 될 것인가?) – amon

+0

내 관심사는 IIRC이다. 동일한 이름이 디렉토리 나 파일을 참조 할 수있는 VMS에 대한 모호한 사례가있다. 세부 사항을 상기하십시오). 디렉토리가 존재하고 파일이 존재하지 않으면'-e'는 무엇을해야합니까? 그렇지 않으면 그 반대입니까? 모든 시스템이 디렉토리와 파일을 동일한 네임 스페이스에 넣을 필요는 없습니다. –

관련 문제