Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Perl中从一个完整路径创建多个目录?_Perl - Fatal编程技术网

如何在Perl中从一个完整路径创建多个目录?

如何在Perl中从一个完整路径创建多个目录?,perl,Perl,可能重复: 在这种情况下: 我的身份证是37093。 我执行一些perl代码,从中创建一个路径名 my $id = "37093"; my $path = join('/', split(//, $id ) ); 路径现在是:3/7/0/9/3 现在我想递归地创建所有尚未创建的目录 这怎么容易做到呢 mkdir -p $the_path 希望这有帮助 或者自己写,但我觉得这应该会更有帮助,更优雅: 希望这有帮助 或者自己写,但我觉得这应该会更有帮助,更优雅: 和: 以及: 如果没有非标准

可能重复:

在这种情况下: 我的身份证是37093。 我执行一些perl代码,从中创建一个路径名

my $id = "37093";
my $path = join('/', split(//, $id ) );
路径现在是:3/7/0/9/3

现在我想递归地创建所有尚未创建的目录

这怎么容易做到呢

mkdir -p $the_path
希望这有帮助

或者自己写,但我觉得这应该会更有帮助,更优雅:

希望这有帮助

或者自己写,但我觉得这应该会更有帮助,更优雅: 和:

以及:



如果没有非标准的异常处理代码,这个答案可能会更有用。@Thariama:您有一个旧版本的File::Path,当前版本是v2.08。您应该升级模块,但在这种情况下,您可以用mkpath everywhere替换make_path。可以使用旧接口mkpath,或者更好地升级模块。您不应该运行过时的软件,而且.不能升级肯定是夸大其词。你可以安装你自己的模块副本,使之容易;另请参阅。通常的反驳是:不允许安装现有核心Perl模块的更新版本,但允许安装从堆栈溢出中获得的代码?区别在哪里?什么使这里的代码更可信?如果没有非标准的异常处理代码,这个答案会更有用。@Thariama:您有一个旧版本的File::Path,当前版本是v2.08。您应该升级模块,但在这种情况下,您可以用mkpath everywhere替换make_path。可以使用旧接口mkpath,或者更好地升级模块。您不应该运行过时的软件,而且.不能升级肯定是夸大其词。你可以安装你自己的模块副本,使之容易;另请参阅。通常的反驳是:不允许安装现有核心Perl模块的更新版本,但允许安装从堆栈溢出中获得的代码?区别在哪里?是什么让这里的代码更可信?当从脚本调用时,它必须是什么样子?您可以使用调用系统来完成它。请看+1-hmm,可以工作,但不使用系统命令是否可能看起来不太优雅?嗯,是的,我认为您可以自己编写递归函数,就像这样,很抱歉我不是perl编码器:但是如何开始新的一行…@Marcus Well FWIW我认为这是一个非常糟糕的答案。使用system来完成在Perl提供的标准模块中实现的简单递归mkdir是一个低效的过程,也是一个潜在的安全漏洞。从脚本调用时,这必须是什么样子?您可以使用call system来完成它。请看+1-hmm,可以工作,但不使用系统命令是否可能看起来不太优雅?嗯,是的,我认为您可以自己编写递归函数,就像这样,很抱歉我不是perl编码器:但是如何开始新的一行…@Marcus Well FWIW我认为这是一个非常糟糕的答案。使用system来完成一个简单的递归mkdir,它是在Perl提供的标准模块中实现的,这是一个效率低下的问题,也是一个潜在的安全漏洞。这种语言称为Perl或Perl not Perl。@dgw:我用大写字母在所用的编程语言下面划线-将其改回Perl,这种语言称为Perl或Perl notPERL@dgw:我用大写字母在所用的编程语言下面划线-将它改回PERL
use File::Path qw(make_path);
use Try::Tiny;

try {
    make_path '3/7/0/9/3';
} catch {
    warn "make_path failed: $_\n";
}