in reply to How to identify available subclasses?

You can have the child classes register themselves with the superclass. One easy way to do this is via the superclass'es import subroutine, which is triggered by use.

See my recent node Re^2: How not to hardcode a package name? for an example.