我正在使用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'
。)
提前感谢您提供任何帮助。
答案 0 :(得分:3)
此错误was fixed in 1.5 您可以考虑使用YAML而不是YAML :: Tiny(Tiny版本应该具有与其父级相同的接口)。
我认为任何变通办法都会在你最终获得带有错误修正的YAML :: Tiny 1.5之后使事情变得更糟。我建议您将use YAML::Tiny 1.50
放入代码中或切换到YAML。