Subject: | superloader issue on use base on modules without a file |
Hi, the following simple script fails:
use Class::Autouse qw(:superloader);
use Class::DBI;
print 'hi';
... the reason it fails is that Class/DBI.pm defines a package without
a file and then attempts to call use base on it:
package Class::DBI::__::Base;
require 5.00502;
use Class::Trigger 0.07;
use base qw(Class::Accessor Class::Data::Inheritable Ima::DBI);
package Class::DBI;
use strict;
use base "Class::DBI::__::Base";
... so you get the following error message only when Class::Autouse is
loaded before Class::DBI -
terry@Abulafia:~/public_html/gimblerus.com$ perl ~/t.pl
Can't locate Class/DBI/__/Base.pm in @INC (@INC contains: /home/terry/perl/lib/\
i386-linux-thread-multi, /home/terry/perl/lib, /home/terry/perl/i386-linux-thre\
ad-multi, /home/terry/perl, /home/terry/perl/share/perl/5.8.4, /home/terry/perl\
/lib/perl/5.8.4, /home/terry/public_html/gimblerus.com, /etc/perl, /usr/local/l\
ib/perl/5.8.4, /usr/local/share/perl/5.8.4, /usr/lib/perl5, /usr/share/perl5, /\
usr/lib/perl/5.8, /usr/share/perl/5.8, /usr/local/lib/site_perl, .) at /usr/sha\
re/perl5/Class/Trigger.pm line 15
Class::Trigger::import('Class::Trigger') called at /usr/share/perl5/Cla\
ss/DBI.pm line 5
Class::DBI::__::Base::BEGIN() called at /usr/share/perl5/Class/Trigger.\
pm line 5
eval {...} called at /usr/share/perl5/Class/Trigger.pm line 5
require Class/DBI.pm called at /home/terry/t.pl line 3
main::BEGIN() called at /usr/share/perl5/Class/Trigger.pm line 5
eval {...} called at /usr/share/perl5/Class/Trigger.pm line 5
BEGIN failed--compilation aborted at /usr/share/perl5/Class/DBI.pm line 5.
Compilation failed in require at /home/terry/t.pl line 3.
BEGIN failed--compilation aborted at /home/terry/t.pl line 3.
terry@Abulafia:~/public_html/gimblerus.com$