You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Perl的Mojo::URL对象中添加多个路径?

如何为Mojo::URL对象添加多个路径?

你尝试通过链式调用->path()方法给Mojo::URL对象添加多级路径,但第二次调用path()会直接覆盖之前设置的路径,导致结果不符合预期。

示例代码

perl -Mojo -E 'say new Mojo::URL("https://httpbin.org/")->path("bytes")->path($_)->to_abs for (1..3)'

期望输出

https://httpbin.org/bytes/1
https://httpbin.org/bytes/2
https://httpbin.org/bytes/3

实际输出

https://httpbin.org/1
https://httpbin.org/2
https://httpbin.org/3

解决方案

以下几种方式可以实现路径的拼接,避免覆盖问题:

  1. 使用path()的数组参数形式
    直接传入多个路径段,方法会自动拼接成多级路径:
perl -Mojo -E 'say new Mojo::URL("https://httpbin.org/")->path("bytes", $_)->to_abs for (1..3)'
  1. 使用merge()方法合并路径
    先设置基础路径,再通过merge()方法合并新的路径段:
perl -Mojo -E 'say new Mojo::URL("https://httpbin.org/")->path("bytes")->merge(Mojo::Path->new($_))->to_abs for (1..3)'
  1. 通过Path对象的append()方法添加路径
    先获取Mojo::Path对象,再调用append()方法添加路径段:
perl -Mojo -E 'say new Mojo::URL("https://httpbin.org/")->path->append("bytes", $_)->to_abs for (1..3)'

原因说明

Mojo::URL的path()方法如果传入单个字符串参数,会直接替换当前的完整路径;只有传入数组参数,或者借助Mojo::Path的append/merge方法,才能实现路径的拼接而非覆盖。

内容的提问来源于stack exchange,提问作者h q

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:06:00