The MakeMaker FAQ talks about chaining bootstraps: Module1: BOOT: boot_Module1(aTHX_ cv); It implies you could do (inside of mybase): BOOT: boot_mybase__Foo(aTHX_ cv); boot_mybase__Bar(aTHX_ cv); boot_mybase__Quux(aTHX_ cv); boot_mybase__Bang(aTHX_ cv); This isn't the case. Those boots use ST(0) as input and set it using XSRETURN_YES. So, the first call clobbers it for the second. I think you need to: PUSHMARK(SP); PUTBACK; boot_.... SPAGAIN; PUTBACK; around each call. Thoughts? // Theo Schlossnagle // Principal Engineer -- http://www.omniti.com/~jesus/ // OmniTI Computer Consulting, Inc. -- http://www.omniti.com/ // Ecelerity: fastest MTA on Earth |