Обработка файлов конфигурации в 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)


YAML разберусь, что и больше.

и вот сайт для протокола.