在perl中捕获错误

时间:2015-12-18 10:38:56

标签: xml perl error-handling

我必须使用XML :: Simple来读取大量的xml文件数据库。

my $xml = XMLin("${file}", ForceArray => 1, KeyAttr => {});

问题是这些xml中的一些已损坏,我希望我的程序删除它们并继续运行。我无法找到任何方法来捕获XMLin中的错误 parser error : Start tag expected '<' not found

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

首先关闭 - 请不要使用XML::Simple - 这是非常讨厌的。 Why is XML::Simple "Discouraged"?

为了解决你的观点 - 破解的XML应该对解析器来说是致命的 - 它必须die(按设计)。在perl中处理此问题的方法是将其包装在eval块中,然后捕获$@以查看它是否失败:

my $xml = eval { XMLin("${file}", ForceArray => 1, KeyAttr => {}); };
warn $@ if $@;