我需要在Perl程序中处理一些HTTP URL,但我怀疑URI
类应该如何帮助我。我应该如何使用Perl URI类?
特别是,我想使用URI
类来解析相对URL并获取它们的组件。然而,问题是:
我需要一个函数来既
URI
对象和URI字符串作为参数的工作(或确保只有一个被传递)sub foo_string_or_url { my $uri = URI->new(shift);
是正确的做法?我不太喜欢它,因为它将
URI
串联起来,并不必要地创建新的对象。提取物成分
my $host = $uri->host;
这也是有问题的,因为不是所有的
URI
■找主持人,特别是,如果有人通过垃圾的功能,这将die()
。解析相对URL
my $new_url = URI::URL->new($uri, $base)->abs;
IIUC,没有
->abs
,结果仍将字符串化的相对URL(而不会为HTTP::Request
的工作),对吗?此外,这是保证返回URI
?
我应该如何处理这些问题?这种可能性是
- 使用
->isa('URI')
和->can("host")
- 似乎容易出错,丑对我所有的时间
- 不要使用
URI
类在所有使用正则表达式- 解析网址我宁愿使用一个库解决方案,而不是调试我自己的
个
- 在
try { ... } catch { ... }
- 裹
URI
操作见第一点
- 裹
是否有使用URI
类的理智,很简单的方法?我没有想过的简单东西(在上面的列表中)?
唯一没有回答的问题是“我应该如何处理这些问题?”,答案是“总是调用abs”。如果您已经拥有绝对URI,它将不会执行任何操作。 – ikegami 2012-02-11 21:02:10