Просто заставьте вашу лямбду захватывать используемые переменные. Простой способ подобен этому
[&]() { EditRecord(rec); }
&
заставляет вашу лямбду захватывать все переменные по ссылке . Есть альтернативы, поэтому по умолчанию этого не происходит. Вы можете исследовать это для себя .
Катализатор:: Плагин:: 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
ступите, чтобы вручную сконфигурировать сервер.
Лучшие практики Perl предостерегают от точно, что Вы хотите. Это указывает, что файлы конфигурации должны быть простыми и избежать вида барочных функций, которых Вы требуете. Это продолжает рекомендовать три модуля (ни один из которых не является Базовым Perl): Конфигурация:: Общий, Конфигурация:: Станд. и Конфигурация:: Крошечный.
Генерал, рациональный позади этого, - то, что редактирование файлов конфигурации имеет тенденцию быть сделанным непрограммистами и чем более сложными Вы делаете Ваши файлы конфигурации, тем более вероятно они завинтят их.
Все это сказало, Вы могли бы смотреть на YAML. Это обеспечивает полнофункциональное, человекочитаемое*
, формат сериализации. Я верю, в настоящее время рекомендуют, чтобы синтаксический анализатор в Perl был YAML:: XS. Если бы Вы действительно идете этим путем, я предложил бы писать, что инструмент конфигурирования для конечных пользователей для использования вместо того, чтобы иметь их редактирует файлы непосредственно.
ETA: На основе ответа Chris Dolan это кажется, что YAML является способом пойти для Вас, так как Катализатор уже использует его (.yml, фактическое расширение для файлов YAML).
*
Я услышал жалобы, что слепые люди могут испытать трудности с ним
YAML ненавистен для конфигурации - это не непрограммист, дружелюбный частично, потому что yaml в переходной приставке по определению повреждается, поскольку они - оба пробельный зависимый по-разному. Это решает основную проблему с Конфигурацией::Общая информация. я записал некоторые довольно сложные файлы конфигурации с C:: G в прошлом и это действительно держится в стороне от Вашего пути с точки зрения требований синтаксиса и т.д. Кроме этого, совет Chris кажется на деньгах.