2013-10-30 43 views
0

此腳本在第一次運行時失敗,但第二次運行時使用相同的output_dir參數成功。Perl腳本無法打開第一次運行但第二次運行成功的文件

$output_dir是用戶傳入的參數,例如「/ home/user/mydir」。

失敗行:

open(StepOne, ">$output_dir/Step_One_Create_Resources.sh"); 

OS是Ubuntu的12.04

這似乎是一個權限問題,但我運行腳本根。

+2

「打開」電話背後的'或者死亡$!'在哪裏?這會給你更多關於這個問題的信息。或者如果你懶惰,只需在腳本的頂部使用autodie; –

回答

0

我發現是什麼導致了這個問題。當一個不存在的目錄作爲輸出目錄被傳入時,該腳本將創建目錄,但它無法在該位置打開文件。當輸出目錄已經存在時,腳本運行良好。

+2

將您的行更改爲'open(StepOne,「> $ output_dir/Step_One_Create_Resources.sh」)或死於$ !;',您將能夠更快地計算出這些問題。 – devnull

1

是的,也許當您第一次調用open(StepOne,「> $ output_dir/Step_One_Create_Resources.sh」)時,$ output_dir不存在。所以,我強烈建議您等到目錄已創建。

do{ 
}while(!(-e $output_dir)); 
open(StepOne, ">$output_dir/Step_One_Create_Resources.sh") or die $!; 

這將確保您在output_dir實際創建後立即打開output_dir!

相關問題