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,但是您可以通过更多的测试找到更好的方法.实现的越多,这个库可能越复杂,但是您可以拥有足够高的价值,以便您可以在所有您或您公司的代码中使用一次性解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |