在 Perl 中,我应该如何创建子目录,并且如果它们不存在的话同时创建父目录呢?就像 UNIX 的 mkdir -p 命令一样?
use File::Path qw(make_path);
make_path("path/to/sub/directory");
被弃用的mkpath和推荐使用的make_path源自于Perl 5 Porters线程中的讨论,该线程已经存档 这里。
简而言之,Perl 5.10测试发现了makepath()接口参数解析的笨拙性。 因此,它被替换为一个更简单的版本,该版本将哈希作为最后一个参数以设置函数选项。
use File::Path qw(mkpath);
mkpath("path/to/sub/directory");
如果您正在寻找具有“mkdir -p”功能的Perl模块,请忽略此内容,但以下代码可以正常工作:
my $dir = '/root/example/dir';
system ("mkdir -p $dir 2> /dev/null") == 0
or die "failed to create $dir. exiting...\n";
你可以使用一个模块,但是你必须在每个要迁移代码的服务器上安装它。对于像创建目录这样的工作,我通常更喜欢使用系统函数,因为只需要在需要时调用一次模块来创建目录,而不需要导入和调用模块的开销较小。
参考 http://perldoc.perl.org/File/Path.html
"make_path函数会创建给定的目录,如果它们不存在的话,就像Unix命令mkdir -p
一样"
mkdir() 函数允许您在 Perl 脚本中创建目录。
示例:
use strict;
use warnings;
my $directory = "tmp";
unless(mkdir($directory, 0755)) {
die "Unable to create $directory\n";