Perl错误:不是ARRAY参考

时间:2013-05-23 09:44:59

标签: perl

我正在尝试执行以下代码,但它会给出错误 代码:

use XML::Simple;
use Data::Dumper;

$xml = new XML::Simple (KeyAttr=>[]);# read XML file

$error =$xml->XMLin("trial.xml");
print "There are " . scalar@{$error->{problem}} . " problems.\n";

因此它给出了在行中规定的错误:

print "There are " . scalar@{$error->{problem}} . " problems.\n";

请让我知道我做错了什么。 谢谢。

2 个答案:

答案 0 :(得分:3)

根据错误消息,$error->{problem}不是数组引用。通常的原因是错误中只有一个问题,而不是几个问题,在这种情况下,XML :: Simple不生成数组。

在文档中查找ForceArray选项:https://metacpan.org/module/GRANTM/XML-Simple-2.20/lib/XML/Simple.pm#ForceArray-1-in

答案 1 :(得分:0)

看一下文档:

  

错误处理

     

XML标准在不合规问题上非常明确   文档。解析任何单个元素时出错(例如a   缺少结束标记)必须导致整个文档被拒绝。   如果遇到a,XML :: Simple将会丢失相应的消息   解析错误。

     

如果死亡不适合您的申请,您应该安排   在eval块中调用XMLin()并在$ @中查找错误。例如:

my $config = eval { XMLin() };
PopUpMessage($@) if($@);

问候,马蒂亚斯