in reply to OO: extending a closure object

Since your base class doesn't restrict how you access $self, you can just put the extension attributes into an instance of the base class:
package Extended; sub new { my $class = shift; my $closure = Base->new; $closure->(CELLULAR => undef); $closure->(EMAIL => undef); bless $closure, $class; }
Why are you using this design? I don't see any advantages to it over more traditional styles. I guess it takes care of generic accessors.

Caution: Contents may have been coded under pressure.