Я хочу создать конфигурацию YAML. файлы, внутри которых я могу поместить код perl, чтобы уменьшить усилие записи одних и тех же блоков несколько раз. Или для любой другой операции. Я хотел бы иметь что-то вроде этого в моем файле YAML:Вставить perl внутри файла YAML
---
`my $a = 1;`
`if($a){`
foo: bar
`}else{`
foo: baz
`}
...
Как видно, я хочу ключ «Foo», чтобы быть присвоено значение «бар» в этом примере.
Это хорошая или плохая идея? Если последний, что лучше всего записать файл и предварительный процессор для такого файла?
Я не думаю, что это хорошая идея. Это превращает простую разметку (точно так же, как XML - простой? - или JSON) в монстра франкенштейна, который требует специальной обработки и может создавать уязвимости безопасности. Возможно, YAML может кодировать различные свойства на основе разных * ключей * в YAML? Например, может быть, есть ключ «отладки» и «производственный» ключ? Затем потребитель YAML выбирает соответствующий ключ (например, все, что находится в $ a). С другой стороны, если это только для * build configuration *, тогда обрабатывайте это отдельно (даже, скажем, старое CPP) во время процесса сборки/развертывания. – user2246674
Я должен согласиться с тем, что это плохая идея. Если вы действительно хотите иметь «исполняемый perl в файле конфигурации», почему даже задействовать YAML? Идите 'eval' содержимое файла и ожидайте, что он вернет хэш-ref. Не совсем безопасно, но если вы находитесь в закрытой среде, это может сработать. –