您知道在导入过程中Moose如何自动打开严格的警告?我想通过打开autodie并在我的Moose类中使用功能“5.10”来扩展这个行为.
我已经跟踪Moose在Moose :: Exporter中的位置,Moose :: Exporter组装了Moose的自定义导入子,它为调用类调用strict-> import和warnings-> import.
但是,我无法想出一种以Moose-ish方式扩展此导入方法的方法.
我该如何处理?
解决方法
由于模块可以通过多种方式将其功能导出到使用命名空间中,因此可能需要执行一些代码挖掘才能实现每个所需的库.你所要求的不是什么具体的Moose,所以你可以写你自己或你公司自己的最佳实践模块,这将建立一组标准,让你工作,例如.
use OurCompany::BestPractices::V1;
同
package OurCompany::BestPractices::V1; use strict; use warnings; use feature (':5.10'); require Fatal; require Moose; # required for straight implementation of autodie code our @ISA; push @ISA,qw( Fatal ); sub import { my $caller = caller; strict->import; warnings->import; feature->import( ':5.10' ); Moose->import ({into => $caller}); #autodie implementation copied from autodie source splice(@_,1,Fatal::LEXICAL_TAG); goto &Fatal::import; } 1;
Autodie使事情变得更复杂一些,因为它依赖于从caller()中找到使用者的包,并使用goto,但是您可以通过更多的测试找到更好的方法.实现的越多,这个库可能越复杂,但是您可以拥有足够高的价值,以便您可以在所有您或您公司的代码中使用一次性解决方案.