создание нового каталога в Perl - PullRequest
0 голосов
/ 07 июня 2018

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

Я использовал этот код:

sub makingDirectoryForClient {
    $nameOfTheClientDirectory = $_[0];
    my $directory = "D:\\ATEF\\clientfolder\\$nameOfTheClientDirectory";
    my $outputvar = mkdir $directory;
}

, но папка по-прежнему не заменяется.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Мне нужно было создать каталог с тем же именем, который уже существовал, так как я думал, что это заменит папку новой пустой папкой.Но Perl не работает таким образом: mkdir не будет работать, если папка с таким именем уже существует.

Поэтому я сначала удалил каталог, используя rmtree из File::Path, а затем создал новый каталогс таким же именем.

0 голосов
/ 07 июня 2018

Если mkdir, похоже, ничего не делает, вы должны написать предупреждение, чтобы выяснить, почему.Причина сбоя будет во встроенной переменной $!, поэтому я предлагаю вам написать свою подпрограмму следующим образом:

sub make_client_dir {
    my $client_dir = shift;

    my $path = "D:\\ATEF\\clientfolder\\$client_dir";

    ( my $success = mkdir $path ) or
            warn qq{Unable to create directory "$path": $!};

    return $success;
}

Обратите внимание, что я также изменил ваш код, чтобы сделать его более идиоматическим

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