如何在一个Perl命令中创建目录和父目录?

时间:2009-06-26 17:48:42

标签: perl filesystems directory mkdir

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

5 个答案:

答案 0 :(得分:24)

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

不推荐使用的mkpath和首选的make_path源于Perl 5 Porters线程中已归档here的讨论。

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:3)

如果您正在寻找具有'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这样的工作,因为当我只需要一次创建目录时,导入和调用模块的开销较小。

答案 3 :(得分:0)

ref http://perldoc.perl.org/File/Path.html

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

答案 4 :(得分:0)

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

示例:

use strict;
use warnings;

my $directory = "tmp";

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

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