【发布时间】:2015-01-26 20:41:34
【问题描述】:
我正在使用 YAML::XS 库将数据结构转储到 YAML:
foo => {
bar => [
{...},
{...},
],
baz => [
{...},
{...},
],
...
}
YAML::XS 的默认行为似乎是在转储密钥之前对其进行排序,但这不是我想要的。人类必须阅读和编辑这个脚本的输出,所以可读性是一个问题。有没有办法控制转储密钥的顺序,以便 foo->{baz} 出现在 foo->{bar} 之前?
【问题讨论】:
-
文档是here
-
您可以使用 YAML.pm 的
Bless来执行此操作,但不确定是否可以使用 YAML::XS。 -
@ikegami 我已经读过了,它没有回答我的问题
-
@Floegipoky,确实如此。
-
@ThisSuitIsBlackNot 我最终将
YAML::XS换成了YAML,非常感谢您指出Bless功能。它比我想用的更强大,但它完成了工作。对于未来的查看者,请注意,除非您在写入时确切知道您期望哪些键,否则您必须检查您正在Blessing 的每个节点。另请注意,如果密钥不存在,它将生成一个虚拟条目,因此请确保首先检查是否存在:my $blessarray = []; push $blessarray, 'optionalkey' if $table->{optionalkey};。