yml 文件中不允许重复标签

Not allow duplicate tags in yml file

我正在尝试使用 yml 模式文件验证我的示例 yml。

a.yml 数据文件:

    test:
         version1
    test:
         version1

s.yml 模式文件:

     type: map
        mapping:
          test:
            type: str 
            required: yes
            unique: yes

在我的 perl 代码中,我使用 YML 内置模块并使用模式文件验证我的数据文件,如下所示:

 eval { validate(YAML::LoadFile(s.yml), YAML::LoadFile(a.yml)) };

我原以为会因为有重复的标签而无法通过验证 'type:'。有没有办法在验证模式模式时不允许 yml 文件中的重复标签。

我注意到加载失败并出现警告:

Name "YAML::SortKeys" used only once: possible typo at test.plline 21.
YAML Warning: Duplicate map key found. Ignoring.

代码:YAML_LOAD_WARN_DUPLICATE_KEY 线路:1 文件:1

目前我正在使用 'use warnings FATAL => qw(all);',我的脚本仍然通过。不知道为什么它仍然通过警告。 我们可以让它出错吗?

YAML::PP 默认禁止重复键 (*)。

use YAML::PP;
my $yaml = <<"EOM";
foo: a
foo: b
EOM
YAML::PP::Load($yaml);

__END__
Duplicate key 'foo' at /.../YAML/PP/Parser.pm line 61.

您正在使用 YAML.pm,不再推荐,因为它是为 YAML 1.0 编写的并且还有其他问题。

(*) YAML::PP 自版本 0.027 起禁止重复键。在他们被忽略之前。