2
我試圖加載使用Perl一個 「簡單」 YAML文件:在YAML模塊中別名解析不正確?
foo: &baz
dog: cat
cat: rat
bar:
<<: *baz
rat: cheese
使用YAML,YAML::XS,或YAML::Syck我得到意想不到的輸出從test script:
{
'foo' => {
'cat' => 'rat',
'dog' => 'cat'
},
'bar' => {
'rat' => 'cheese',
'<<' => $VAR1->{'foo'}
}
}
在這情況下,{bar}->{dog}
是undef
。通過YAML Lint(或甚至Ruby's YAML module)運行相同的輸入,它按預期輸出。
如何讓Perl解析並輸出正確的格式?
所以基本上我不得不叉這些模塊和補丁代碼的一個解析別名(這似乎成爲其中的一部分YAML 1.2?不能說我熟悉閱讀語言規範)。 –
有Perl解決方法,例如:http://www.perlmonks.org/?node_id=813443 – bart
如果您確實從基於libyaml的YAML :: XS開始。或者,您可以使用支持合併的解析器預處理文件,方法是讀取文件並將其寫回。除了我的用於Python的ruamel.yaml解析器,它保留了往返時的合併,所有其他解析器將「解除合併」映射,然後您可以使用任何這些庫將它讀入Perl。 – Anthon