【发布时间】:2013-07-16 00:36:44
【问题描述】:
我想创建 YAML 配置。我可以在其中放入 perl 代码的文件,以减少多次编写相同块的工作量。或用于任何其他操作。我想在我的 YAML 文件中包含这样的内容:
---
`my $a = 1;`
`if($a){`
foo: bar
`}else{`
foo: baz
`}
...
很明显,在本例中,我希望为键 'foo' 分配值 'bar'。
这是个好主意还是坏主意?如果是后者,编写该文件的最佳方法是什么以及该文件的预处理器?
【问题讨论】:
-
我认为这不是一个好主意。这会将一个简单的标记(就像 XML - 简单? - 或 JSON)变成一个需要自定义处理并可能引入安全漏洞的科学怪人。也许 YAML 可以根据 YAML 中的不同 keys 对不同的属性进行编码?例如,也许有一个“调试”键和一个“生产”键?然后,YAML 使用者将选择适当的密钥(例如,在 $a 中的任何内容上)。另一方面,如果这仅用于构建配置,则在构建/部署过程中单独处理(甚至是旧的 CPP)。
-
我不得不承认这是个坏主意。如果你真的想在配置文件中有“可执行的 perl”,为什么还要让 YAML 参与进来呢?转到
eval文件的内容,并期望它返回一个哈希引用。不完全安全,但如果你在一个封闭的环境中,它可以工作。