summaryrefslogtreecommitdiff
path: root/lib/base.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/base.pm')
-rw-r--r--lib/base.pm11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/base.pm b/lib/base.pm
index c6d8cca4a7..37f220f63a 100644
--- a/lib/base.pm
+++ b/lib/base.pm
@@ -45,7 +45,7 @@ L<fields>
package base;
use 5.006_001;
-our $VERSION = "1.02";
+our $VERSION = "1.03";
sub import {
my $class = shift;
@@ -54,9 +54,10 @@ sub import {
foreach my $base (@_) {
next if $pkg->isa($base);
- push @{"$pkg\::ISA"}, $base;
my $vglob;
- unless (${*{"$base\::VERSION"}{SCALAR}}) {
+ if ($vglob = ${"$base\::"}{VERSION} and *$vglob{SCALAR}) {
+ $$vglob = "-1, set by base.pm" unless defined $$vglob;
+ } else {
eval "require $base";
# Only ignore "Can't locate" errors from our eval require.
# Other fatal errors (syntax etc) must be reported.
@@ -67,9 +68,9 @@ sub import {
"\t(Perhaps you need to 'use' the module ",
"which defines that package first.)");
}
- ${"$base\::VERSION"} = "-1, set by base.pm"
- unless ${*{"$base\::VERSION"}{SCALAR}};
+ ${"$base\::VERSION"} = "-1, set by base.pm" unless defined ${"$base\::VERSION"};
}
+ push @{"$pkg\::ISA"}, $base;
# A simple test like (defined %{"$base\::FIELDS"}) will
# sometimes produce typo warnings because it would create