获取perl中相对于主目录的路径

时间:2014-05-10 09:33:20

标签: perl

对于这个问题我找到了一个解决方案,但我正在寻找替代解决方案。 假设我在目录

/home/user/testA/testB

我的主目录是/home/user,如何获取当前目录相对于我的主目录的路径?那就是:testA/testB

我尝试了以下内容:

use Cwd qw(getcwd);
use Env qw(HOME);

my $cdir=getcwd;
my $p=$cdir=~s{^\Q$HOME\E/}{}r;

它似乎有效。我的问题是,是否有CPAN模块可以做到这一点?我最接近的是File::Spec::Functions qw(abs2rel),但它只是给了我../.. ..也许我错过了什么?

2 个答案:

答案 0 :(得分:2)

对于File::Spec

,这似乎对我有用
#!usr/bin/perl

use File::Spec;

$base = '/home/user';
$path = '/home/user/testA/testB';

my $rel_path = File::Spec->abs2rel( $path, $base );
print($rel_path);

输出:

testA/testB

答案 1 :(得分:1)

使用Path::Tiny

#!/usr/bin/perl
use warnings;
use strict;

use Path::Tiny;

my $base = '/home/user';
my $path = '/home/user/testA/testB';

my $relative = path($path)->relative($base);
print "$relative\n";