Guys, We're seeing a weird error from Class::MOP::load_class. It doesn't happen all the time, and when I run simple tests I don't see the error. Hopefully someone can see something I'm missing in this stack trace:
Couldn't load class (Company::CompanyBusinessModel) because: Can't locate 0.pm in @INC (@INC contains: /home/buddy/proj/rent. com/lib /usr/local/lib/perl5/5.8.9/i686-linux /usr/local/lib/perl5/5.8.9 /usr/local/lib/perl5/site_perl/5.8.9/i686-linux /usr /local/lib/perl5/site_perl/5.8.9 /usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux /usr/local/lib/perl5/vendor_perl/5.8.9 /us r/local/lib/perl5/vendor_perl /usr/local/lib/perl5/site_perl). at /usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux/Class/MOP .pm line 116 Class::MOP::load_first_existing_class(0) called at /usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux/Class/MOP.pm lin e 121 Class::MOP::load_class(0) called at /usr/local/lib/perl5/vendor_perl/5.8.9/MooseX/Declare/Syntax/KeywordHandling.pm l ine 68 MooseX::Declare::Syntax::KeywordHandling::parse_declaration('MooseX::Declare::Syntax::Keyword::Class=HASH(0xc8c264c)' , '/home/buddy/proj/rent.com/lib/Company/CompanyBusinessModel.pm', 'HASH(0xc8ae634)', 'class', 0) called at /usr/local/lib/pe rl5/vendor_perl/5.8.9/MooseX/Declare/Syntax/KeywordHandling.pm line 40 MooseX::Declare::Syntax::KeywordHandling::__ANON__('class', 0) called at /usr/local/lib/perl5/vendor_perl/5.8.9/i686- linux/Devel/Declare.pm line 279 Devel::Declare::linestr_callback('const', 'class', 0) called at /home/buddy/proj/rent.com/lib/Company/CompanyBusiness Model.pm line 16 require Company/CompanyBusinessModel.pm called at /usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux/Class/MOP.pm line 101 Class::MOP::__ANON__() called at /usr/local/lib/perl5/vendor_perl/5.8.9/Try/Tiny.pm line 74 eval {...} called at /usr/local/lib/perl5/vendor_perl/5.8.9/Try/Tiny.pm line 67 Try::Tiny::try('CODE(0xc91ad0c)', 'Try::Tiny::Catch=REF(0xc91b174)') called at /usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux/Class/MOP.pm line 110 Class::MOP::load_first_existing_class('Company::CompanyBusinessModel') called at /usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux/Class/MOP.pm line 121 Class::MOP::load_class('Company::CompanyBusinessModel') called at /home/buddy/proj/rent.com/lib/Company/Moose.pm line 59 Company::Moose::load_class('Company::CompanyBusinessModel') called at /home/buddy/proj/rent.com/lib/Company/Company.pm line 2444 Company::Company::business_model('Company::Company=HASH(0xc8c2820)') called at /home/buddy/proj/rent.com/lib/Company/BillingPeriod.pm line 513 The stack trace goes on (and on) for a while, but I think that's all the interesting parts. We can see that my method is calling my copy of load_class (that's the one in Company::Moose), which all it does is untaint its arg (assuming it looks safe, of course), then call Class::MOP::load_class with it. And we can see that the argument is making it that far. Then we see some fiddling with Try::Tiny and an eval and then the argument is still there when it does the actual require. But then it does something via Devel::Declare::linestr_callback and the name of the class has somehow become '0'. So I can't figure out what's going on here. Does anyone have any light they can shed? Or at least some ideas of where and what I should do for further debugging? TIA guys! -- Buddy