Обработка файлов конфигурации в Perl
в пространстве имен Config:: на CPAN есть много модулей, но все они ограничены ond-способом или другим.
в настоящее время я использую Config:: Std, что прекрасно большую часть времени, однако это затрудняет некоторые вещи:
- более двух уровней вложенности директивы
- обработка нескольких значений на ключ
- conf.D каталоги, т. е. несколько файлов конфигурации, которые объединены в одну большую конфигурацию хэш
Config:: Std генерирует благословенный hashref после разбора конфигурации, поэтому все мои приложения кодируются для использования hashref для конфигурации. Я бы предпочел не менять это.
то, что я ищу, - это универсальный, легкий модуль конфигурации, который производит hashref.
у меня вопрос: какие модули конфигурации следует рассмотреть для замены Config:: Std?
3 ответов
вы не указали, где ваши данные. Вы читаете в файле конфигурации и работаете в пределе самого файла конфигурации?
Config:: Std-отличный модуль. Однако он предназначался для чтения и записи файлов конфигурации/INI Windows, а файлы конфигурации/INI Windows-очень плоские и простые форматы. Таким образом, я бы не ожидал, что Config::Std сделает намного больше.
Если вы используете файлы Windows Config/INI прямо сейчас, но, возможно, потребуется прочитать более сложные данные структуры в будущем, Config:: Any-хороший способ пойти. Он будет обрабатывать файлы Windows Config / INI и использовать тот же интерфейс программирования, читать и писать XML, YAML и JSON-файловые структуры.
Если вы просто пытаетесь сохранить сложную структуру данных в своей программе и не заботитесь о чтении и записи файлов конфигурации, я бы рекомендовал посмотреть на XML::Simple по очень простой причине ...что ж... простой и может обрабатывать все виды данных конструкций. Плюс, XML:: Simple - очень часто используемый модуль, поэтому в интернете есть много помощи, если у вас есть какие-либо вопросы о модуле, и он активно поддерживается.
вы можете использовать Config:: Any, но я нахожу его более сложным в использовании и сложнее настроить. Фактически, вы должны установить XML:: Simple (или аналогичный модуль), чтобы использовать его. Преимущество Config:: Any заключается в том, что это единый интерфейс для всех видов форматов файлов конфигурации. Таким образом, вы не должны взломать ваш программа, если вы решили переключить форму Windows Config / INI на XML или YAML.
Итак, если вы работаете с файлами Windows Config/INI сейчас, и вам нужна более сложная структура данных: посмотрите Config::Any.
Если вы просто хотите простой способ отслеживания сложных структур данных, посмотрите на XML:: Simple.
Config:: Any (для загрузки нескольких файлов и сжатия для хэш) и его Config:: General backend (для произвольно вложенных элементов конфигурации и нескольких значений на ключ à la Apache httpd)