2011-12-02 157 views
4

我认为之前给出的脚本很混乱,这是我现在要运行的脚本,它不是创建目录,请在此帮助我。mkdir无法在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"; 
} 
+2

Crosspost http://perlmonks.org/index.pl?node_id=941302 – daxim

+0

作为一个备注:你可能想'chomp'你的输入行,以避免意外的结果... – pavel

回答

8

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

你似乎很有可能一次尝试mkdir两个目录(…/$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 $!; 
相关问题