Well... Ok. "Moving parts" was a misnomer, but export_to_level doesn't solve the issue of
use base. The other two bits that make me uncomfortable are that the "2" is a bit of a magic number (and doesn't allow for further "inheritance" of the exports) and I'd need to do that explicitly for every module that needs to generate exports.
By just altering @EXPORT in the base and putting an explicit import in the derived class, I get exactly the same behavior.