我有一条路径:/path/to/here/file.txt
。
我想获得/path/to/
使用
my ($file, $dir) = fileparse($fullPath);
我可以获得file.txt
和/path/to/here/
如何获得/path/to/
?
答案 0 :(得分:4)
use Path::Class qw( file );
say file("/path/to/here/file.txt")->dir->parent;
请注意,这不会执行任何文件系统检查,因此即使/path/to
是符号链接,它也会返回/path/to
,因此不是真正的父目录。
答案 1 :(得分:2)
使用Path::Tiny:
$ perl -MPath::Tiny -e 'CORE::say path($ARGV[0])->parent->parent' /path/to/here/file.txt
这也不执行任何文件系统检查。仅使用File::Spec进行此操作往往会变得乏味。我不肯定以下工作:
$ perl -MFile::Spec::Functions=splitpath,catpath,catdir,splitdir -e \
'($v, $d) = splitpath($ARGV[0]); @d = splitdir $d; splice @d, -2; \
CORE::say catpath($v, catdir (@d))' /path/to/here/file.txt