我正在遍历页面上的链接列表,为每个链接创建一个URI对象.创建URI对象时,我不知道URL是否有方案,所以当我稍后调用时$uri->host(),我有时会得到
Can't locate object method "host" via package "URI::_generic" at -e line 1.
因为URI对象是类型URI::_generic,并且没有host()属性.
我可以在使用正则表达式创建对象之前检查,或者我可以将块中的$uri->host()调用包装起来eval处理异常,但我认为必须有一个比其中任何一个更温和的方法.
Rob*_*t P 13
我的建议:在正则表达式之前使用内置语言功能.
而不是正则表达式,你可以这样做:
if ($uri->can('host')) {
say "We're good!";
}
Run Code Online (Sandbox Code Playgroud)
......看看它是否可用.您还可以检查它的类型:
if ($uri->isa('URI::_generic')) {
die 'A generic type - not good!' ;
}
Run Code Online (Sandbox Code Playgroud)
......并确认你有一个好的.