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