处理YAML中的尾随结肠

时间:2011-09-07 20:38:04

标签: perl yaml

我正在使用YAML :: Tiny来写入和读取Perl中的文件。不幸的是,我遇到以冒号结尾的数据有问题:

my $test_message = {"hoody" => 'hoo:'};
my $dump = YAML::Tiny::Dump($test_message);
my $reloaded = YAML::Tiny::Load($dump);
print Data::Dumper::Dumper($reloaded);

这会产生Failed to load YAML document from string at [the line with YAML::Tiny::Load]

首先,这看起来像一个bug。是吗?或者我对YAML :: Tiny期待太多了? (我们使用的是YAML :: Tiny 1.48;最新的是1.50,IT保证我很快就会安装。)

第二,有什么方法可以解决这个问题吗?我正在尝试使用转义字符,但我一定不能正确使用它。我尝试用\x3A替换冒号,但这不会产生所需的行为。 (打印$dump使字符串不变[hoo\x3A], 而Data::Dumper::Dumper行使其成为'hoo\\x3A'。)

提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:3)

此错误was fixed in 1.5 您可以考虑使用YAML而不是YAML :: Tiny(Tiny版本应该具有与其父级相同的接口)。

我认为任何变通办法都会在你最终获得带有错误修正的YAML :: Tiny 1.5之后使事情变得更糟。我建议您将use YAML::Tiny 1.50放入代码中或切换到YAML。