如何在perl中找到两个父目录?

时间:2017-08-04 19:49:33

标签: perl path

我有一条路径:/path/to/here/file.txt

我想获得/path/to/

使用

 my ($file, $dir) = fileparse($fullPath);

我可以获得file.txt/path/to/here/

如何获得/path/to/

2 个答案:

答案 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