+ - Fix _load_module to deal with pre-existing subpackages
+
0.9.2 Wed Nov 17 2010
- Add explanation of Moo's existence
- Change @ISA setting mechanism to deal with a big in 5.10.0's get_linear_isa
package Moo::_Utils;
sub _getglob { \*{$_[0]} }
+sub _getstash { \%{"$_[0]::"} }
use strictures 1;
use base qw(Exporter);
our %MAYBE_LOADED;
sub _load_module {
- return 1 if $_[0]->can('can');
(my $proto = $_[0]) =~ s/::/\//g;
+ return 1 if $INC{"${proto}.pm"};
+ # 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 !/::$/, keys %{_getstash($_[0])||{}};
require "${proto}.pm";
return 1;
}