All you've actually done is written more lines of code and made it less portable than it was before.
What was it before? How is it less portable now?
Consider the problem: dynamically loading pm's. That means that the module to be loaded might just be input by a user. You can't just use a hardwired name. The only other solution offered was eval, which comes with security issues.
We're not really tightening our belts, it just feels that way because we're getting fatter.