我想创建 YAML 配置。我可以在其中放入 perl 代码的文件,以减少多次编写相同块的工作量。或用于任何其他操作。我想在我的 YAML 文件中有这样的东西:
---
`my $a = 1;`
`if($a){`
foo: bar
`}else{`
foo: baz
`}
...
很明显,在本例中,我希望为键 'foo' 分配值 'bar'。
这是个好主意还是坏主意?如果是后者,编写文件和预处理器的最佳方法是什么?
这不是一个好主意,但可以做得更好。
你有两种方法:
将您的 YAML / JSON 文件视为标准 Perl 模板系统之一的模板。
在我看来,Emperl 是一个很好的候选者,但那是因为它是我非常熟悉的。任何支持控制流的模板框架都适合。
这样,您无需编写自己的语言/语法;并且您会以纯形式获得最终生成的 YAML/XML/JSON,因此不需要自定义解析器。
创建基于 Perl 的格式。
例如,你的配置是一大块 Perl 代码,本质上是一个 eval-able(或do
-able)代码块,导致配置散列。
结果哈希结构可以是任何你想要的,但如果你希望它是,它可以镜像原始 JSON/YAML,并且可以使用标准转换工具转换为一个。