gpt4 book ai didi

perl - 在 perl 中解析 yaml --> 代码 : YAML_LOAD_ERR_BAD_MAP_ELEMENT

转载 作者:行者123 更新时间:2023-12-01 05:22:35 29 4
gpt4 key购买 nike

我有一个 yaml 文件,它是从另一个来源生成的,如下所示。

connect1:
connect2:
- { level1 : name, level2: age,
level3: gender}

我的代码看起来像这样--?

use YAML::Tiny qw(LoadFile);
use YAML;
use YAML::Loader;
use YAML::Syck;
use YAML qw(LoadFile);
use Data::Dumper;

my $data = LoadFile("file.yaml");
my @config = $data->{connect1}->{connect2};
print Dumper(@config);

我收到以下错误 -->YAML 错误: map 中的元素无效 代码:YAML_LOAD_ERR_BAD_MAP_ELEMENT 线路:3 文件:1

如果 level1 、 level2 和 leve3 在同一行,那么我看不到这个问题。我认为这个问题是因为缩进。但是我无法更改这个file.yaml。那么 perl 中有没有一种方法可以在不修改 file.yaml 的情况下仍然解析这个 yaml 文件?

最佳答案

Perl 中 YAML 的状态有点令人遗憾,因为有几个模块支持不同的功能。

YAML::Syck、YAML::XS 和 YAML::PP 可以解析您的示例。 YAML::XS 现在可能是个不错的选择。

YAML.pm是 YAML 的第一个 perl 模块,它是为 YAML 1.0 编写的。

YAML::Syck基于为 YAML 1.0 编写的 libsyck。它可以解析的不仅仅是 YAML.pm。

YAML::XS基于 libyaml,为 YAML 1.1 编写。您应该能够使用它解析大多数 YAML,并且 libyaml 用于(或被移植到)许多其他语言中。

YAML::Tiny只支持 YAML 的一个子集,不包括流集合 { ... }[ ... ] 和别名/ anchor (&x, *x)

YAML::PP很新,已经可以解析很多,但它还不完整。它旨在解析 YAML 1.2( future 还将部分支持 1.1) 免责声明:我是作者

您可以在这里找到我在 2017 年伦敦 Perl 研讨会上的幻灯片: https://perlpunk.github.io/slides.lpw2017/yaml-where-and-how-to-use/

从幻灯片 24 开始,您将快速了解这 5 个模块。

关于perl - 在 perl 中解析 yaml --> 代码 : YAML_LOAD_ERR_BAD_MAP_ELEMENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51689801/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com