Instead of requiring by module name, generate the path and require() that.
Florian Ragwitz [Fri, 17 Oct 2008 03:18:34 +0000 (03:18 +0000)]
This doesn't generate confusing errors when loading '__PACKAGE__'.

lib/Class/MOP.pm

index b69bf51..d05de84 100644 (file)
@@ -111,7 +111,9 @@ sub load_class {
     # if the class is not already loaded in the symbol table..
     unless (is_class_loaded($class)) {
         # require it
-        my $e = do { local $@; eval "require $class"; $@ };
+        my $file = $class . '.pm';
+        $file =~ s{::}{/}g;
+        my $e = do { local $@; eval { require($file) }; $@ };
         confess "Could not load class ($class) because : $e" if $e;
     }