1#line 1 2package Module::Install::Base; 3 4$VERSION = '0.76'; 5 6# Suspend handler for "redefined" warnings 7BEGIN { 8 my $w = $SIG{__WARN__}; 9 $SIG{__WARN__} = sub { $w }; 10} 11 12### This is the ONLY module that shouldn't have strict on 13# use strict; 14 15#line 41 16 17sub new { 18 my ($class, %args) = @_; 19 20 foreach my $method ( qw(call load) ) { 21 *{"$class\::$method"} = sub { 22 shift()->_top->$method(@_); 23 } unless defined &{"$class\::$method"}; 24 } 25 26 bless( \%args, $class ); 27} 28 29#line 61 30 31sub AUTOLOAD { 32 my $self = shift; 33 local $@; 34 my $autoload = eval { $self->_top->autoload } or return; 35 goto &$autoload; 36} 37 38#line 76 39 40sub _top { $_[0]->{_top} } 41 42#line 89 43 44sub admin { 45 $_[0]->_top->{admin} or Module::Install::Base::FakeAdmin->new; 46} 47 48#line 101 49 50sub is_admin { 51 $_[0]->admin->VERSION; 52} 53 54sub DESTROY {} 55 56package Module::Install::Base::FakeAdmin; 57 58my $Fake; 59sub new { $Fake ||= bless(\@_, $_[0]) } 60 61sub AUTOLOAD {} 62 63sub DESTROY {} 64 65# Restore warning handler 66BEGIN { 67 $SIG{__WARN__} = $SIG{__WARN__}->(); 68} 69 701; 71 72#line 146 73