Автоматическое создание отсутствующей папки с perl - PullRequest
0 голосов
/ 29 апреля 2020

Привет, я очень новичок в программировании и perl, мне очень нужна помощь. Требование: в настоящее время создается автоматическая папка, создавая также с подпапкой, если ошибочно удалить. Чтобы вызвать подпапку, я не сделал жесткий код, все подпапки состоят из 9. Поэтому используйте «для» функции l oop и «массив», чтобы убедиться, что все подпапки существуют после удаления папки.

#!/usr/bin/env perl
use strict;
use warnings;

my $dirname = "/srv/ym/home/ymadm/transfer/ymtrans/YM/sharmila";
my $dirname1 = '/srv/ym/home/ymadm/transfer/ymtrans/YM/sharmila/';

my @folder = qw(test1 test2 abc def efg);
my $exists = ` if [ -d '$dirname' ] ; then echo 1; else echo 0; fi `;
$exists =~ s/\n$//;
    if ($exists eq '1')
    {
            print "exists";

    }
    else
    {
        unless(mkdir($dirname, 0777)) 
        {
            die "Unable to create $dirname\n";
        }

    chmod(0777, $dirname) or die "Couldn't chmod $dirname: $!";


        for(my $i = 1; $i <= 5; $i = $i + 1 ) 
        {

            unless(mkdir($dirname1.$i.@folder, 0777)) 
            {
                die "Unable to create $dirname1\n";
            }



            chmod(0777, $dirname1.$i.@folder) or die "Couldn't chmod $dirname1.$i: $!";
        }    


    }
print "\n";

1 Ответ

1 голос
/ 29 апреля 2020

Нет необходимости раскошелиться на -d, Perl имеет тот же оператор.

Чтобы создать путь со всеми воссозданными недостающими частями, используйте make_path из File :: Path :

#!/usr/bin/env perl
use strict;
use warnings;
use feature qw{ say };

use File::Path qw{ make_path };

my $dirname  = "/srv/ym/home/ymadm/transfer/ymtrans/YM/sharmila";
my @folders  = qw( test1 test2 abc def efg );

my $fullpath = join '/', $dirname, @folders;

if (-d $fullpath) {
    say 'Exists.';
} else {
    make_path($fullpath);  # mode => 0777 is the default
    say 'Created.';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...