在perl中创建新目录

时间:2018-06-07 05:58:13

标签: perl directory

我想在方法开头之前创建一个具有特定名称的目录。在每次迭代时,目录应该用新条目替换而不是附加。

我使用过这段代码:

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

但文件夹仍未被替换。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果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;
}

请注意,我还修改了您的代码以使其更具惯用性

答案 1 :(得分:1)

我需要创建一个已经存在的同名目录,因为我认为这将用新的空文件夹替换该文件夹。但Perl不会那样工作:如果已经存在同名文件夹,mkdir将无效。

所以我首先使用rmtree中的File::Path删除了目录,然后创建了一个同名的新目录。