Как вы, кажется, уже знаете,
a: b
c: d
получается путем сброса хэша, поэтому вы хотите, чтобы хэш был верхним уровнем вашего документа. Подтверждение концепции:
print YAML::Dumper->new->dump({
core => {
blob => 'build\\content\\objects\\36d80951814b5f08c7ba34cd7a5459b4c212ee6200ce247ac2a13d24b2fc0d57',
size => 31,
type => 'blob/text',
},
text => {
lines => [
{ length => 1, offset => 0 },
{ length => 5, offset => 1 },
{ length => 7, offset => 6 },
{ length => 13, offset => 13 },
{ length => 1, offset => 26 },
],
},
});
Выход:
---
core:
blob: build\content\objects\36d80951814b5f08c7ba34cd7a5459b4c212ee6200ce247ac2a13d24b2fc0d57
size: 31
type: blob/text
text:
lines:
- length: 1
offset: 0
- length: 5
offset: 1
- length: 7
offset: 6
- length: 13
offset: 13
- length: 1
offset: 26
Так измени
my @tagobj_header_table;
push @tagobj_header_table, make_tagobj_core_header;
push @tagobj_header_table, make_tagobj_text_header;
my $dumper = YAML::Dumper->new;
print $dumper->dump(@tagobj_header_table);
до
my %doc = (
%{ make_tagobj_core_header() },
%{ make_tagobj_text_header() },
);
print YAML::Dumper->new->dump(\%doc);
хотя я думаю, что было бы лучше, если бы вы изменили сабвуферы, чтобы сработало следующее:
my %doc = (
core => make_tagobj_core_header(),
text => make_tagobj_text_header(),
);
print YAML::Dumper->new->dump(\%doc);