perl – 如何扩展Moose的自动语法输出?
发布时间:2020-12-15 22:01:53 所属栏目:大数据 来源:网络整理
导读:您知道在导入过程中Moose如何自动打开严格的警告?我想通过打开autodie并在我的Moose类中使用功能“5.10”来扩展这个行为. 我已经跟踪Moose在Moose :: Exporter中的位置,Moose :: Exporter组装了Moose的自定义导入子,它为调用类调用strict- import和warnings
|
您知道在导入过程中Moose如何自动打开严格的警告?我想通过打开autodie并在我的Moose类中使用功能“5.10”来扩展这个行为.
我已经跟踪Moose在Moose :: Exporter中的位置,Moose :: Exporter组装了Moose的自定义导入子,它为调用类调用strict-> import和warnings-> import. 但是,我无法想出一种以Moose-ish方式扩展此导入方法的方法. 我该如何处理? http://www.friedo.com/bullwinkle.gif 解决方法
由于模块可以通过多种方式将其功能导出到使用命名空间中,因此可能需要执行一些代码挖掘才能实现每个所需的库.你所要求的不是什么具体的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,但是您可以通过更多的测试找到更好的方法.实现的越多,这个库可能越复杂,但是您可以拥有足够高的价值,以便您可以在所有您或您公司的代码中使用一次性解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
