JTM-Boilerplate
view release on metacpan or search on metacpan
lib/JTM/Boilerplate.pm view on Meta::CPAN
#
# Copyright (C) 2015-2025 Joelle Maslak
# All Rights Reserved - See License
#
package JTM::Boilerplate;
# ABSTRACT: Default Boilerplate for Joelle Maslak's Code
$JTM::Boilerplate::VERSION = '2.253341';
use strict;
use warnings;
use v5.22;
use strict;
use feature 'signatures';
no warnings 'experimental::signatures';
no warnings 'experimental::re_strict';
use re 'strict';
use English;
use Import::Into;
use Smart::Comments;
use re;
sub import ( $self, $type = 'script' ) {
### assert: ($type =~ m/^(?:class|role|script)$/ms)
my $target = caller;
strict->import::into($target);
warnings->import::into($target);
autodie->import::into($target);
my ($ver) = "$PERL_VERSION" =~ m/^v(\d+\.\d+)\..*$/;
feature->import::into( $target, ":$ver" );
utf8->import::into($target); # Allow UTF-8 Source
if ( $type eq 'class' ) {
Moose->import::into($target);
Moose::Util::TypeConstraints->import::into($target);
MooseX::StrictConstructor->import::into($target);
namespace::autoclean->import::into($target);
} elsif ( $type eq 'role' ) {
Moose::Role->import::into($target);
Moose::Util::TypeConstraints->import::into($target);
MooseX::StrictConstructor->import::into($target);
namespace::autoclean->import::into($target);
} else {
Feature::Compat::Class->import::into($target);
}
Carp->import::into($target);
English->import::into($target);
Smart::Comments->import::into( $target, '-ENV', '###' );
feature->import::into( $target, 'postderef' ); # Not needed if feature bundle >= 5.23.1
Feature::Compat::Defer->import::into($target);
Feature::Compat::Try->import::into($target);
# We haven't been using this
# feature->import::into($target, 'refaliasing');
feature->import::into( $target, 'signatures' );
feature->import::into( $target, 'unicode_strings' );
# warnings->unimport::out_of($target, 'experimental::refaliasing');
warnings->unimport::out_of( $target, 'experimental::signatures' );
if ( $PERL_VERSION lt v5.24.0 ) {
warnings->unimport::out_of( $target, 'experimental::postderef' );
}
# For "re 'strict'" feature
warnings->unimport::out_of( $target, 'experimental::re_strict' );
re->import('strict');
if ( $PERL_VERSION ge v5.32.0 ) {
# Turn off indirect syntax
feature->unimport::out_of( $target, 'indirect' );
# Turn on isa
feature->import::into( $target, 'isa' );
warnings->unimport::out_of( $target, 'experimental::isa' );
}
if ( $PERL_VERSION ge v5.34.0 ) {
# Turn off multidimensional "array" emulation
feature->unimport::out_of( $target, 'multidimensional' );
( run in 1.934 second using v1.01-cache-2.11-cpan-140bd7fdf52 )