3

我正在编写一个程序,我必须删除路径中的冗余,例如

a/b/.. -> a
a//b   -> a/b
a/./b  -> a/b

有没有现有的模块可以做到这一点?

更新:此规范化/规范化由RFC 3986描述。我只需要路径段规范化部分。

当然,这很容易实现。我仍然想知道它是否已经被打包到某个模块中。

4

1 回答 1

1

标准中未指定 URL 层次结构中元素的表单路径和含义或关系。根据服务器的不同,可能根本没有层次结构 - 拆分的元素/可以被视为位置或顺序可能根本没有意义。因此,没有特定的模块来处理 URL 的该任务。

但是,如果您完全确定目标服务器的工作方式,您可以简单地适应File::Spec您的需求:从 URL 中提取路径(例如使用URI),将其作为文件路径进行处理,然后将其放回原处。

考虑到您将在文件系统上使用常规文件名的评论,您甚至不需要从路径中提取任何内容 -File::Spec足以满足您的所有需求。

如果您希望解决(通过File::Spec设计)不解决. 使用和将结果打包回来。..splitpathsplitdirsplice..catdircatfile

于 2012-08-28T09:39:03.290 回答