Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl脚本无法在第一次运行时打开文件进行写入,但在第二次运行时成功_Perl_Ubuntu - Fatal编程技术网

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

Perl脚本无法在第一次运行时打开文件进行写入,但在第二次运行时成功,perl,ubuntu,Perl,Ubuntu,此脚本在第一次运行时失败,但在第二次使用相同的output_dir参数运行时成功 $output\u dir是用户传入的参数,如“/home/user/mydir” 故障线路: open(StepOne, ">$output_dir/Step_One_Create_Resources.sh"); 操作系统是Ubuntu 12.04 这似乎是权限问题,但我正在以root用户身份运行脚本。我发现了导致此问题的原因。当一个不存在的目录作为输出目录传入时,脚本将创建该目录,但无法在该位置打开文件

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

$output\u dir
是用户传入的参数,如“/home/user/mydir”

故障线路:

open(StepOne, ">$output_dir/Step_One_Create_Resources.sh");
操作系统是Ubuntu 12.04


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

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

是的,也许当您第一次调用open(StepOne,“>$output\u dir/Step\u One\u Create\u Resources.sh”)时,$output\u dir确实不存在。因此,我强烈建议您等到创建目录时再使用

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

这将确保您在实际创建输出目录后立即打开输出目录

将行更改为
open(StepOne,“>$output\u dir/Step\u One\u Create\u Resources.sh”)或die$
这样你就可以更快地发现这些问题了。“要死的钱”在哪里在
open
呼叫后面?这将为您提供有关该问题的更多信息。或者如果你很懒,就使用autodie位于脚本顶部。