mkdir не может создать каталог в Perl - PullRequest
4 голосов
/ 02 декабря 2011

Я думаю, что приведенный ранее скрипт сбивал с толку, это скрипт, который я хочу запустить сейчас, но не создающий каталог, пожалуйста, помогите мне в этом.

Я не понимаю, если код идиотский, как я только начинающий в Perl.Не могли бы вы предложить мне правильный подход для этого сценария, и если у меня есть какие-либо ошибки?

output_folder1.txt содержит 10010, а output_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 ]

8 голосов
/ 02 декабря 2011

Вам необходимо добавить $! к вашей строке кубика (die "File cannot be created: $!").Это даст вам причину почему.$! - это сообщение об ошибке операционной системы.См. «Переменные ошибок» в perlvar .

Возможно, вы пытаетесь использовать mkdir сразу для двух каталогов (…/$temp2 и …/$temp2/$temp1).Для этого вам понадобятся два вызова mkdir или используйте File::Path s make_path.

3 голосов
/ 02 декабря 2011

Сначала проверьте, существует ли каталог $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 голосов
/ 02 декабря 2011

File :: Path :: make_path в сочетании с Path :: Class (или сам по себе, если вам не нужен красивый интерфейс для независимых от платформы путей) следует снять большую часть боли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...