2

假设我有一个基本目录/home/user/test/。现在,我有两个字符串ab它们将是基本目录中的文件夹,例如/home/user/test/a/b.

目前我正在做的是:

use File::Path qw(make_path);

my $path = "$basedir"."/"."a"."/"."b"
make_path("$path");

现在,我正在寻找的是:

my $dir = "/home/user/test";
my $x = "a";
my $y = "b";

make_path($dir, $x, $y); 

但是当我运行上面的代码而不是创建它时,它会在当前工作目录中创建/home/user/test/a/b两个单独的目录。ab

那么,实现这一目标的正确方法是什么?

4

2 回答 2

3

这是一个简单的方法:

use strict;
use warnings;
use File::Path qw(make_path);    

my $dir = "/home/user/test";
my $x = "a";
my $y = "b";

make_path(join '/',$dir,$x,$y); 

查找join更多信息。

于 2012-10-22T10:47:57.133 回答
3

更好地使用Path::Class::Dir

use Path::Class qw(dir);  # Export a short constructor

my $dir = dir('foo', 'bar');       # Path::Class::Dir object
my $dir = Path::Class::Dir->new('foo', 'bar');  # Same thing

# Stringifies to 'foo/bar' on Unix, 'foo\bar' on Windows, etc.
print "dir: $dir\n";

另请参阅 perldoc Path::Class::Dir 或 https://metacpan.org/module/Path::Class::Dir

于 2012-10-22T11:23:59.753 回答