在Perl中,如何创建子目录,同时创建父目录(如果它们不存在)?像UNIX的mkdir -p命令一样?
答案 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(只有所有者才有权写入该目录;组成员和其他成员只能查看文件并列出目录内容)。