Provide utility methods for factory classes
This module exports a method that is useful for factory classes.
When this module is loaded, it creates a method in its caller named
subclasses(). This method returns a list of the available subclasses for the
package. It does this by looking in @INC as well as the directory containing
the caller, and finding any modules in the immediate subdirectories of the
So if you have the modules "Foo::Base", "Foo::Base::Bar", and "Foo::Base::Baz",
then the return value of Foo::Base->subclasses() would be "Bar" and "Baz".