2016-04-11 24 views
0

我试图通过在Perl引用传递一个XML子节点,但我不断收到一个错误 传递一个XML子节点通过参考

my $global_XMLData = $xml->XMLin($response->content(), ForceArray => ['Parent']); 

for my $child(@{$global_XMLData->{Parent}) 
{ 
     parseXML(\$child); 
} 

sub parseXML 
{ 

    my $child= shift; 
    $global_bu{bu_id} = $child->{theAttribute}; 

    # There's about 20-30 more attributes to get, 
    # but for this example, there's only one 
} 

“不是哈希参考”现在,如果我把它传递按价值它工作得很好,我确实得到的数据,但每次我尝试通过引用传递我不断收到错误。任何帮助?我只是不希望数据是一个副本,因为它是一个相当大的XML子节点。

+0

我真的认为不使用XML :: Simple就可以改善你的生活。我写了[本教程](http://grantm.github.io/perl-libxml-by-example/)帮助人们开始使用XML :: LibXML,这比XML :: Simple更容易混淆。 –

回答

1

$child已经是参考。如果您在致电parseXML()之前致电print $childprint ref($child),则可以看到此内容。如果你打电话给parseXML($child),你应该没问题。

\$child,这是越来越传递给parseXML功能,必然是一个标量的参考,它不会让你里面parseXML()做必要使用它作为一个哈希引用。