此腳本在第一次運行時失敗,但第二次運行時使用相同的output_dir參數成功。Perl腳本無法打開第一次運行但第二次運行成功的文件
$output_dir
是用戶傳入的參數,例如「/ home/user/mydir」。
失敗行:
open(StepOne, ">$output_dir/Step_One_Create_Resources.sh");
OS是Ubuntu的12.04
這似乎是一個權限問題,但我運行腳本根。
此腳本在第一次運行時失敗,但第二次運行時使用相同的output_dir參數成功。Perl腳本無法打開第一次運行但第二次運行成功的文件
$output_dir
是用戶傳入的參數,例如「/ home/user/mydir」。
失敗行:
open(StepOne, ">$output_dir/Step_One_Create_Resources.sh");
OS是Ubuntu的12.04
這似乎是一個權限問題,但我運行腳本根。
我發現是什麼導致了這個問題。當一個不存在的目錄作爲輸出目錄被傳入時,該腳本將創建目錄,但它無法在該位置打開文件。當輸出目錄已經存在時,腳本運行良好。
將您的行更改爲'open(StepOne,「> $ output_dir/Step_One_Create_Resources.sh」)或死於$ !;',您將能夠更快地計算出這些問題。 – devnull
是的,也許當您第一次調用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!
「打開」電話背後的'或者死亡$!'在哪裏?這會給你更多關於這個問題的信息。或者如果你懶惰,只需在腳本的頂部使用autodie; –