This module is a great idea. When I first saw it, I sort of muttered about how it was just a tiny convenience. After I gave it a little thought, though, I realized that the kind of convenience this provided was just the kind of convenience that I wanted. It hid a lot of the ugliness that makes code harder to read and understand without thinking.
Once I finally started to use Sub::Installer though, I realized that it worked not by mixing into classes as requested, but by installing into UNIVERSAL, with no recourse to do otherwise.
I liked the idea enough to implement my own, similar solution, and it makes me very happy. The idea is great. The implementation just goes too far.
This module provides a mechanism for simplifying the process of manipulating the symbol table to add or replace functions, and I'm sure it works completely correctly given the author.
However, to support a slight saving of characters it uses the extraordinarily evil trick of superclassing UNIVERSAL.
Playing games with UNIVERSAL is normally a strategy of last resort, as it can cause unintended results in other modules, and having more than one module that does things to UNIVERSAL can often result in strange bugs, race conditions and corner cases.
I would score this at 2 stars not for the use of UNIVERSAL this way, but for doing it for such a trivial gain in functionality. There are a number of other ways similar functionality could be have done done that would be just as clear, and wouldn't involve increasing the potential for collisions with other modules.
The use of this module should be discouraged for anything larger than trivial scripts, particularly once you use a significant number of other modules. And the creation of any module with this as a dependency is highly discouraged. Do you own symbol table manipulation. Cut and paste from inside it if necesary.
Another star is removed for the seemingly unnecesary use of a three-part version and the use of version.pm in an environment (CPAN) where reduction of dependencies and back-compatibility is encouraged, and without even listing it as a dependency.