我正在嘗試使用 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)) };
由于有重復的標簽“型別:”,我原以為驗證會失敗。有沒有辦法在驗證架構模式時不允許 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);',但我的腳本仍在通過。不知道為什么它仍然通過警告。我們可以讓它出錯嗎?
uj5u.com熱心網友回復:
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 版本開始禁止重復鍵。在他們被忽視之前。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/464675.html
上一篇:perloneliner逐行讀取檔案并按位置跳過一些單詞
下一篇:While回圈或同一命令N次
