对于这个问题我找到了一个解决方案,但我正在寻找替代解决方案。 假设我在目录
/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)
,但它只是给了我../..
..也许我错过了什么?
答案 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";