You know as well as I do that both those complaints (valid as they may be) were done for equally valid reasons. For the edification of the reader ...
self_or_default() was a design decision that, in hindsight, probably should've been done differently. Breaking backwards compatibility in the core module and providing a wrapper would probably have been a saner solution.
The hand-rolled autoloading mess is something you won't get Lincoln to apologize for. Until the advent of mod_perl and similar persistent interpreters, anything that could be done to speed up CGI.pm was considered a good thing.
My criteria for good software:
Does it work?
Can someone else come in, make a change, and be reasonably certain no bugs were introduced?