我想从使用Perl API的网站提取数据。我正在使用URI列表从网站获取数据。eval {}声明中的跳过错误
最初的问题是,if there was no data available for the URI it would die,我希望它跳过那个特定的URI并转到下一个可用的URI。我用next unless ....;
来解决这个问题。
现在的问题是我试图通过从API中调用特定方法(称为identifiers()
)从网络中提取特定数据。现在数据可用于URI,但具体数据(标识符),我正在查找的内容不可用,并且会死亡。
我试图用eval{}
这样
eval {
for $bar ($foo->identifiers()){
#do something
};
}
当我使用eval{}
我觉得它跳过错误并向前推进,但我不知道。因为它给出的错误是Invalid content type in response:text/plain
。
鉴于我手动检查了URI,虽然它没有标识符,但它包含了其余的数据。我希望这跳过并移动到下一个URI。我怎样才能做到这一点?
谢谢你的回答。那么,我正在使用的API是Connotea Perl API。我用严格的;并使用警告;感谢您的建议。此外,我得到的错误是无效的内容类型的响应:在mycode行41和我的代码(我的程序)41行的text/html是真正的来自web的数据。我知道代码中没有错误,因为它对于以前的uris来说工作正常。现在,我该如何解决这个错误,并继续前进到下一个uri?我的程序陷入了这个错误。 – sammed
好的,Connotea Perl不是LWP :: UserAgent。它只接受RDF MIME类型,即application/xml或application/rdf + xml。 text/html也不是,那就是你的错误来自哪里。在这种情况下,服务器说内容不是RDF(因为它不是XML)。您可能需要围绕几乎所有Connotea Perl代码使用Try :: Tiny或eval来抵御此。 –