Fixing this has been tried. Dozens of times.

Class::Accessor(::*), Object::Simple, Class::Maker, Class::Builder, etc.

Some are better than others, but all of them lack in some way, or don't really achieve much.

Enter Moose.