在Perl中,使用mkdir创建目录失败。

4

我认为之前给出的脚本很混乱,现在我想要运行的脚本没有创建目录,请帮助我。

由于我只是Perl的初学者,所以不介意代码是否愚蠢。您能为这个脚本建议正确的方法吗?如果有任何错误,也请指出。

output_folder1.txt 包含 10010output_folder.txt_2 包含 30001

我得到了“无法创建输出文件”的错误。

#!/usr/local/bin/perl -w
use strict;


print "Content-type:text/html\n\n";

my(@folder_name,$temp1,$temp2);

open ONE,"<","/var/www/html/piRNA_html/UNAFold/output_folder_1.txt" || die "Cannot open the file";
@folder_name=<ONE>;
close ONE;

open TWO,"<","/var/www/html/piRNA_html/UNAFold/output_folder_2.txt" || die  "Cannot open the file";
push(@folder_name,<TWO>);
close TWO;


print $folder_name[0],"\n",$folder_name[1],"\n";

$temp1 = pop(@folder_name);
$temp2 = pop(@folder_name);



if($temp1 < 30050)
{

    mkdir "/var/www/html/piRNA_html/UNAFold/output/$temp2/$temp1",0777 or die "File cannot be created";
}

2
跨帖 http://perlmonks.org/index.pl?node_id=941302 - daxim
附带说明:你可能想要 chomp 你的输入行,以避免意外结果... - pavel
3个回答

8
您需要在die语句中添加$!die "无法创建文件:$!")。这将给您提供错误原因。 $!是操作系统的错误信息。请参见“perlvar”中的“错误变量”
您似乎正在尝试一次性创建两个目录(…/$temp2…/$temp2/$temp1)。您需要使用两个mkdir调用,或使用File::Pathmake_path函数。

3

您应该首先检查$temp2目录是否存在:

unless ( -d "/var/www/html/piRNA_html/UNAFold/output/$temp2" ) {
    mkdir "/var/www/html/piRNA_html/UNAFold/output/$temp2",0777 or die $!;
}
mkdir "/var/www/html/piRNA_html/UNAFold/output/$temp2/$temp1",0777 or die $!;

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接