This is an easy-to-use interface for defining custom attributes. But there are several annoyances:
The documentation is not as clear as it could be. For instance, it's not obvious how to "export" attributes so that they can be used in another package. I've had to look at code in CPAN to see that the handler should be called "UNIVERSAL::Name" instead of "Name". I hate putting things in the universal namespace, and indeed that leads to conflicts. (Attribute::Handlers and Class::Std are incompatible, for instance...)
The documentation does not make it clear that the distinction between running the handler when the attribute is defined, versus a handler that mediates access to the object (as with a tied interface). Parts of the documentation imply the latter, others imply the former.
If I create an attribute name in all lowercase, I get a warning about how it might become a future reserved name in Perl. Ok, but I don't care and want to turn that warning off, specifically. How?
5 out of 6 found this review helpful. Was this review helpful to you? Yes No