ページ上のリンクのリストを反復処理して、それぞれの 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ブロックでラップして例外を処理することもできますが、これらのいずれよりも適切な方法が必要であると考えています。