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 起禁止重复键。在他们被忽略之前。
我正在尝试使用 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 起禁止重复键。在他们被忽略之前。