Я думаю, что я столкнулся с ошибкой в Params::Validate, но я не уверен, правильно ли я определил фрагмент проблемного кода, Код, о котором идет речь, не смог пройти исключения по цепочке (используя Try::Tiny), поэтому я начал отлаживать и обнаружил, что класс, используемый внутри блок try
имеет деструктор. Этот деструктор вызывает методы объекта, которые используют Params::Validate
и просматривают Validate.pm
источник Я вижу локальную eval
без [email protected]
, т.е. глобальный [email protected]
будет перезаписан.
Теперь я вижу два варианта:
-
Params::Validate
должен всегда локализовать[email protected]
и, следовательно, это ошибка, о которой следует сообщить. - Ошибка находится в соответствующем классе, потому что он не должен использовать
Params::Validate
в деструкторе.Params::Validate
может оставаться таким, как сейчас.
Какая из них? Как я должен справиться с этой ситуацией?
PS: Я думаю, что модули CPAN должны быть прочными и не сломать себя и свою среду, поэтому заголовок вопроса.