mkdir无法在perl中创建目录

时间:2011-12-02 12:16:50

标签: perl

我认为之前给出的脚本令人困惑,这是我现在要运行的脚本,这不是创建目录,请在此帮助我。

如果代码是愚蠢的,我不会批评,因为我只是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";
}

3 个答案:

答案 0 :(得分:8)

您需要将$!添加到您的骰子字符串(die "File cannot be created: $!")。这会给你原因。 $!是来自操作系统的错误消息。请参阅"Error Variables" in perlvar

您似乎很可能一次尝试mkdir两个目录(…/$temp2…/$temp2/$temp1)。您需要两次mkdir调用,或使用File::Pathmake_path

答案 1 :(得分: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 :(得分:2)

File::Path::make_pathPath::Class一起使用(或者如果你不关心平台无关路径的漂亮接口),应该可以消除大部分的痛苦。