perl – 如何扩展Moose的自动语法输出?

前端之家收集整理的这篇文章主要介绍了perl – 如何扩展Moose的自动语法输出?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
您知道在导入过程中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,但是您可以通过更多的测试找到更好的方法.实现的越多,这个库可能越复杂,但是您可以拥有足够高的价值,以便您可以在所有您或您公司的代码中使用一次性解决方案.

猜你在找的Perl相关文章