我正在编写一个程序,我必须删除路径中的冗余,例如
a/b/.. -> a
a//b -> a/b
a/./b -> a/b
有没有现有的模块可以做到这一点?
更新:此规范化/规范化由RFC 3986描述。我只需要路径段规范化部分。
当然,这很容易实现。我仍然想知道它是否已经被打包到某个模块中。
我正在编写一个程序,我必须删除路径中的冗余,例如
a/b/.. -> a
a//b -> a/b
a/./b -> a/b
有没有现有的模块可以做到这一点?
更新:此规范化/规范化由RFC 3986描述。我只需要路径段规范化部分。
当然,这很容易实现。我仍然想知道它是否已经被打包到某个模块中。
标准中未指定 URL 层次结构中元素的表单路径和含义或关系。根据服务器的不同,可能根本没有层次结构 - 拆分的元素/
可以被视为位置或顺序可能根本没有意义。因此,没有特定的模块来处理 URL 的该任务。
但是,如果您完全确定目标服务器的工作方式,您可以简单地适应File::Spec
您的需求:从 URL 中提取路径(例如使用URI
),将其作为文件路径进行处理,然后将其放回原处。
考虑到您将在文件系统上使用常规文件名的评论,您甚至不需要从路径中提取任何内容 -File::Spec
足以满足您的所有需求。
如果您希望解决(通过File::Spec
设计)不解决. 使用和将结果打包回来。..
splitpath
splitdir
splice
..
catdir
catfile