2013-08-04 71 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 

我試圖避免做opendir and grep找到目錄名稱,因爲它似乎是矯枉過正。

更新的問題:
做perl concat $ dir。 「/ dirname」在執行-e或-d檢查之前?

+4

-d標誌是你正在尋找 –

+1

你也可能需要閱讀'的perldoc -f -X'。 –

+1

你似乎很困惑。 '-e'告訴你它的論點是否存在;它不詢問它的inode類型。 – tchrist

回答

8

使用-d測試來查看給定路徑是否是目錄。在這種情況下,-e也將返回true,因爲那個測試存在某些文件系統對象。

要查看路徑是否指向純文件(無目錄,無符號鏈接,無特殊文件),請使用-f

所以,你想:

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

我知道'-e'對於類Unix(和類Windows)系統上的目錄是真實的,但它可以保證* all *平臺嗎? –

+0

我強烈懷疑如此,並且無法在perlport中找到其他條目。只是不要引用我的話。 (但是,我的意思是,還有什麼會'-e'成爲?) – amon

+0

我擔心的是,IIRC,在VMS上存在一個不明確的情況,即同一名稱可以引用目錄或文件(我不回憶細節)。如果目錄存在且文件不存在,應該用「-e」做什麼,反之亦然?並非所有系統都必須將目錄和文件放在同一個命名空間中。 –