Poiché è possibile che un modulo esporti le sue funzioni nello spazio dei nomi use
-ing, è possibile che sia necessario eseguire alcune operazioni di scavo del codice per implementare ciascuna libreria desiderata. Quello che stai chiedendo non è nulla di specifico per Moose, quindi puoi scrivere il tuo o il modulo di best practice della tua azienda che stabilirà un gruppo di standard con cui lavorare, ad es.
use OurCompany::BestPractices::V1;
con
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,0,Fatal::LEXICAL_TAG);
goto &Fatal::import;
}
1;
Autodie rende le cose un po 'più complicata dato che si basa sulla ricerca di pacchetti di l'uso-er da chiamante() e utilizza il goto, ma si può essere in grado di trovare una migliore modo con più test. Quanto più implementerai, tanto più complicata sarà questa libreria, ma potrebbe essere di valore abbastanza alto per te da avere la soluzione one-off che puoi usare all'interno di tutti voi o il codice della vostra azienda.
Grande esempio, grazie – friedo
Ho finito per usare una variazione di questa idea. – friedo