}
sub _instantiate_module {
- my $self = shift;
- my $version = shift;
- my $authority = shift;
-
+ my($self, $version, $authority) = @_;
my $package_name = $self->name;
- my $code = "package $package_name;";
+ Class::MOP::_is_valid_class_name($package_name)
+ || confess "creation of $package_name failed: invalid package name";
- $code .= "\$$package_name\:\:VERSION = '" . $version . "';"
- if defined $version;
- $code .= "\$$package_name\:\:AUTHORITY = '" . $authority . "';"
- if defined $authority;
+ no strict 'refs';
+ scalar %{$package_name . '::'}; # touch the stash
+ ${$package_name . '::VERSION'} = $version if defined $version;
+ ${$package_name . '::AUTHORITY'} = $authority if defined $authority;
- my $e = do {
- local $@;
- local $SIG{__DIE__};
- eval $code;
- $@;
- };
- confess "creation of $package_name failed : $e" if $e;
+ return;
}
1;