Module-CheckVersion

 view release on metacpan or  search on metacpan

script/check-module-version  view on Meta::CPAN

#sub _getglob { no strict 'refs'; \*{$_[0]} }
#sub _getstash { no strict 'refs'; \%{"$_[0]::"} }
#
#sub croak {
#  require Carp;
#  no warnings 'redefine';
#  *croak = \&Carp::croak;
#  goto &Carp::croak;
#}
#
#sub Role::Tiny::__GUARD__::DESTROY {
#  delete $INC{$_[0]->[0]} if @{$_[0]};
#}
#
#sub _load_module {
#  my ($module) = @_;
#  (my $file = "$module.pm") =~ s{::}{/}g;
#  return 1
#    if $INC{$file};
#
#  # can't just ->can('can') because a sub-package Foo::Bar::Baz
#  # creates a 'Baz::' key in Foo::Bar's symbol table
#  return 1
#    if grep !/::\z/, keys %{_getstash($module)};
#  my $guard = _WORK_AROUND_BROKEN_MODULE_STATE
#    && bless([ $file ], 'Role::Tiny::__GUARD__');
#  local %^H if _WORK_AROUND_HINT_LEAKAGE;
#  require $file;
#  pop @$guard if _WORK_AROUND_BROKEN_MODULE_STATE;
#  return 1;
#}
#
#sub _require_module {
#  _load_module($_[1]);
#}
#
#sub _all_subs {
#  my ($me, $package) = @_;
#  my $stash = _getstash($package);
#  return {
#    map {;
#      no strict 'refs';
#      # this is an ugly hack to populate the scalar slot of any globs, to
#      # prevent perl from converting constants back into scalar refs in the
#      # stash when they are used (perl 5.12 - 5.18). scalar slots on their own
#      # aren't detectable through pure perl, so this seems like an acceptable
#      # compromise.
#      ${"${package}::${_}"} = ${"${package}::${_}"}
#        if _CONSTANTS_DEFLATE;
#      $_ => \&{"${package}::${_}"}
#    }
#    grep exists &{"${package}::${_}"},
#    grep !/::\z/,
#    keys %$stash
#  };
#}
#
#sub import {
#  my $target = caller;
#  my $me = shift;
#  strict->import;
#  warnings->import;
#  my $non_methods = $me->_non_methods($target);
#  $me->_install_subs($target, @_);
#  $me->make_role($target);
#  $me->_mark_new_non_methods($target, $non_methods)
#    if $non_methods && %$non_methods;
#  return;
#}
#
#sub _mark_new_non_methods {
#  my ($me, $target, $old_non_methods) = @_;
#
#  my $non_methods = $INFO{$target}{non_methods};
#
#  my $subs = $me->_all_subs($target);
#  for my $sub (keys %$subs) {
#    if ( exists $old_non_methods->{$sub} && $non_methods->{$sub} != $subs->{$sub} ) {
#      $non_methods->{$sub} = $subs->{$sub};
#    }
#  }
#
#  return;
#}
#
#sub make_role {
#  my ($me, $target) = @_;
#
#  return if $me->is_role($target);
#  $INFO{$target}{is_role} = 1;
#
#  my $non_methods = $me->_all_subs($target);
#  delete @{$non_methods}{grep /\A\(/, keys %$non_methods};
#  $INFO{$target}{non_methods} = $non_methods;
#
#  # a role does itself
#  $APPLIED_TO{$target} = { $target => undef };
#  foreach my $hook (@ON_ROLE_CREATE) {
#    $hook->($target);
#  }
#}
#
#sub _install_subs {
#  my ($me, $target) = @_;
#  return if $me->is_role($target);
#  my %install = $me->_gen_subs($target);
#  *{_getglob("${target}::${_}")} = $install{$_}
#    for sort keys %install;
#  return;
#}
#
#sub _gen_subs {
#  my ($me, $target) = @_;
#  (
#    (map {;
#      my $type = $_;
#      $type => sub {
#        my $code = pop;
#        my @names = ref $_[0] eq 'ARRAY' ? @{ $_[0] } : @_;
#        push @{$INFO{$target}{modifiers}||=[]}, [ $type, @names, $code ];
#        return;



( run in 2.455 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )