Каков лучший модуль Perl для иерархической и наследуемой конфигурации?

Просто заставьте вашу лямбду захватывать используемые переменные. Простой способ подобен этому

[&]() { EditRecord(rec); }

& заставляет вашу лямбду захватывать все переменные по ссылке . Есть альтернативы, поэтому по умолчанию этого не происходит. Вы можете исследовать это для себя .

5
задан brian d foy 15 March 2009 в 23:52
поделиться

3 ответа

Катализатор:: Плагин:: ConfigLoader поддерживает несколько переопределяющих файлов конфигурации. Если Ваше приложение Катализатора называют MyApp, затем это имеет три уровня переопределения: 1) MyApp.pm может иметь a __PACKAGE__->config(...) директива, 2) это затем ищет MyApp.yml в основном каталоге приложения 3) это ищет MyApp_local.yml. Каждый уровень может переопределить настройки друг в друге уровень.

В приложении Катализатора я создал, я вставил все свои неизменные настройки MyApp.pm, мои параметры настройки отладки в MyApp.yml, и мои производственные настройки в MyApp_<servertype>.yml и затем symlinked MyApp_local.yml указать на MyApp_<servertype>.yml на каждом развернутом сервере (они были всеми немного отличающимися...).

Тем путем вся моя конфигурация была в SVN, и мне просто был нужен тот ln -s ступите, чтобы вручную сконфигурировать сервер.

9
ответ дан 18 December 2019 в 09:54
поделиться

Лучшие практики Perl предостерегают от точно, что Вы хотите. Это указывает, что файлы конфигурации должны быть простыми и избежать вида барочных функций, которых Вы требуете. Это продолжает рекомендовать три модуля (ни один из которых не является Базовым Perl): Конфигурация:: Общий, Конфигурация:: Станд. и Конфигурация:: Крошечный.

Генерал, рациональный позади этого, - то, что редактирование файлов конфигурации имеет тенденцию быть сделанным непрограммистами и чем более сложными Вы делаете Ваши файлы конфигурации, тем более вероятно они завинтят их.

Все это сказало, Вы могли бы смотреть на YAML. Это обеспечивает полнофункциональное, человекочитаемое*, формат сериализации. Я верю, в настоящее время рекомендуют, чтобы синтаксический анализатор в Perl был YAML:: XS. Если бы Вы действительно идете этим путем, я предложил бы писать, что инструмент конфигурирования для конечных пользователей для использования вместо того, чтобы иметь их редактирует файлы непосредственно.

ETA: На основе ответа Chris Dolan это кажется, что YAML является способом пойти для Вас, так как Катализатор уже использует его (.yml, фактическое расширение для файлов YAML).

* Я услышал жалобы, что слепые люди могут испытать трудности с ним

6
ответ дан 18 December 2019 в 09:54
поделиться

YAML ненавистен для конфигурации - это не непрограммист, дружелюбный частично, потому что yaml в переходной приставке по определению повреждается, поскольку они - оба пробельный зависимый по-разному. Это решает основную проблему с Конфигурацией::Общая информация. я записал некоторые довольно сложные файлы конфигурации с C:: G в прошлом и это действительно держится в стороне от Вашего пути с точки зрения требований синтаксиса и т.д. Кроме этого, совет Chris кажется на деньгах.

2
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: