You could also use Moose, but (as someone who only does Moose when it's on my plate), Moose has always struck me more as a lifestyle than a solution to a problem; its community is not as cultish as some of the webframeworks, but they're on the edge.
But hey, if it works for you, more power to you.
Comment on Re^3: avoiding overwriting variables in an inherited class