Using require is fine but then you have to manually convert between class names and file names yourself. Which means that you have to translate Module::Name to Module/Name.pm.
Not hard. But requires extra code.
Comment on Re^4: Most effective way to dynamically load a module?