在Perl中从相对路径转换为绝对路径

时间:2019-01-03 08:27:55

标签: file perl absolute relative

我有一个相对路径,该路径可能不是有效路径(但出于某种原因我仍然想使用该路径)。我想通过从路径中删除/../将路径转换为绝对路径。

示例:

相对路径-a / b /../ d 我希望结果为a / d

我尝试了File :: Spec和Cwd,但是没有一个给我正确的结果。基本上,我需要一个perl API来做到这一点,而又无需遍历实际目录路径。

1 个答案:

答案 0 :(得分:4)

您反复说过您想要绝对路径,但是a/d不是绝对路径。我认为您需要一条规范(“清理”)的路径。为此,您可以使用File :: Spec的canonpath

use File::Spec::Functions qw( canonpath );

canonpath('a/b/./d')         ⇒        a/b/c
canonpath('a/b/../d')        ⇒        a/b/../d

a/b/../d不一定等同于a/d,它甚至可能不是a的后代,因此无法简化。