2015-03-31 20 views
-1
-d $Dir or make_path($Dir) or die "Can't mkdir $Dir: $!"; 

我有這行代碼,但時間少於1%的腳本失敗說:使用-d,以檢查是否存在目錄有時會失敗

mkdir <$Dir path>: File exists at script.pl line 234 

什麼毛病我使用的方法「-d」和「or」?

+0

它曾經失敗,然後工作,在相同的目錄字符串?如果沒有,你能提供一個失敗的目錄字符串的例子,並讓我們知道你在哪個平臺上運行? – 2015-03-31 20:15:08

+2

@toolic,如果目錄存在,'-d'的目的是爲了避免'die'。也就是說,'die'完全沒用,因爲'make_path'已經在錯誤時死掉了。因此,代碼可以簡化爲'make_path($ Dir);'。 – ikegami 2015-03-31 20:48:53

回答

5

聽起來好像你正在嘗試創建一個與現有(普通)文件同名的目錄。由於目標不是目錄,因此-d返回false。然後make_path因爲無法創建請求的目錄而死亡。