Perl脚本无法在第一次运行时打开文件进行写入,但在第二次运行时成功

时间:2013-10-30 07:33:19

标签: perl ubuntu

此脚本在第一次运行时失败,但在第二次使用相同的output_dir参数运行时成功。

$output_dir是用户传入的参数,例如“/ home / user / mydir”。

失败的行:

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

操作系统是Ubuntu 12.04

这似乎是权限问题,但我是以root身份运行脚本。

2 个答案:

答案 0 :(得分: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!

答案 1 :(得分:0)

我发现导致此问题的原因。当一个不存在的目录作为输出目录传入时,该脚本将创建该目录,但它无法在该位置打开文件。当输出目录已存在时,脚本运行正常。