如何在perl中使用数组构建hashref?

如何在perl中使用数组构建hashref?,perl,xml-simple,hashref,Perl,Xml Simple,Hashref,我很难用XML::Simple在perl中构建我认为是hashref(href)的东西。 我是新来的,所以不知道该怎么做,我也找不到太多可以用数组来构建这个href。我找到的所有示例都是针对普通href的 下面的代码输出了正确的xml位,但我真的很难在这个href中添加更多内容 谢谢 达里奥 要向array ref'books'添加新的散列,需要将array ref强制转换为一个数组,然后继续@{$test->{book}将数组引用强制转换为数组 push @{ $test->{book}

我很难用XML::Simple在perl中构建我认为是hashref(href)的东西。 我是新来的,所以不知道该怎么做,我也找不到太多可以用数组来构建这个href。我找到的所有示例都是针对普通href的

下面的代码输出了正确的xml位,但我真的很难在这个href中添加更多内容

谢谢 达里奥


要向array ref'books'添加新的散列,需要将array ref强制转换为一个数组,然后继续
@{$test->{book}
将数组引用强制转换为数组

push @{ $test->{book} }, { name => ['name'], value => ['The Hobbit'] };

XML::Simple
是一个难题,因为您永远无法确定是需要数组还是哈希,而且很难区分元素和属性

我建议你搬到伦敦去。这个程序演示了如何使用它创建与您自己使用
XML::Simple
的程序相同的XML数据

它有一个优势,因为它在内存中构建了正确表示XML的数据结构。可以像这样线性地添加数据,也可以在结构中存储书签,然后返回并向以前创建的节点添加信息

此代码以不同的方式添加两个
book
元素。第一种是标准方式,打开元素,添加
name
value
元素,然后再次关闭
book
元素。第二个显示了
\u ast
(抽象语法树)方法,该方法允许您以类似于
XML::Simple
中的嵌套数组的形式传递数据,以实现简洁性。此结构要求您在属性名称前面加上连字符
-
,以区别于元素名称

use strict;
use warnings;

use XML::API;

my $xml = XML::API->new;

$xml->library_open;

$xml->book_open;
$xml->name('createdDate');
$xml->value('20141205');
$xml->book_close;

$xml->_ast(book => [
  name  => 'deletionDate',
  value => '20111205',
]);

$xml->library_close;

print $xml;
输出

<?xml version="1.0" encoding="UTF-8" ?>
<library>
  <book>
    <name>createdDate</name>
    <value>20141205</value>
  </book>
  <book>
    <name>deletionDate</name>
    <value>20111205</value>
  </book>
</library>

创建日期
20141205
删除日期
20111205
<?xml version="1.0" encoding="UTF-8" ?>
<library>
  <book>
    <name>createdDate</name>
    <value>20141205</value>
  </book>
  <book>
    <name>deletionDate</name>
    <value>20111205</value>
  </book>
</library>