18

在 Perl 中,如何创建子目录,如果父目录不存在,同时创建父目录?像 UNIX 的 mkdir -p 命令?

4

5 回答 5

29
use File::Path qw(make_path);
make_path("path/to/sub/directory");

不推荐使用的 mkpath 和首选 make_path 源于 Perl 5 Porters 线程中的讨论,该线程已存档在这里

简而言之,Perl 5.10 测试在 makepath() 接口的参数解析中出现了尴尬。因此,它被一个更简单的版本所取代,该版本将哈希作为设置函数选项的最终参数。

于 2009-06-26T18:23:06.983 回答
3

使用 File::Path 模块中的 mkpath:

use File::Path qw(mkpath);
mkpath("path/to/sub/directory");
于 2009-06-26T17:49:34.060 回答
2

如果您正在寻找具有“mkdir -p”功能的 Perl 模块,请忽略,但以下代码可以使用:

my $dir = '/root/example/dir';

system ("mkdir -p $dir 2> /dev/null") == 0 
    or die "failed to create $dir. exiting...\n";

您可以使用一个模块,但是您必须将它安装在要移植代码的每台服务器上。我通常更喜欢将系统函数用于像 mkdir 这样的工作,因为当我只需要一次来创建目录时,导入和调用模块的开销较小。

于 2012-09-17T08:26:17.853 回答
0

参考http://perldoc.perl.org/File/Path.html

“make_path 函数创建给定目录,如果它们不存在 [原文如此!] 之前,很像 Unix 命令mkdir -p

于 2012-09-16T16:24:16.763 回答
0

mkdir() 允许您在 Perl 脚本中创建目录。

例子:

use strict;
use warnings;

my $directory = "tmp";

unless(mkdir($directory, 0755)) {
        die "Unable to create $directory\n";

该程序创建一个名为“tmp”的目录,权限设置为0755(只有所有者才有权限写入目录;组成员和其他人只能查看文件并列出目录内容)。

于 2018-07-11T05:22:31.107 回答