This is slightly off-topic, as your post is about strong encapsulation. Nonetheless, do take a look at Class::MethodMaker to help reduce the drudgery of
setting up the setters & getters. Perhaps you could subclass C:MM somehow if you really really need to lock up all the doors tight (rather than just latching the doors, as suggested by most of the previous respondents to your post).