package YourExtension; use base 'TheOriginal'; sub new { my $class = shift; my $extended = $class->SUPER::new( @_ ); my %self = ( CELLULAR => undef, EMAIL => undef, ); my $closure = sub { my $field = shift; if ( exists $self{$field} ) { if ( @_ ) { $self{$field} = shift } return $self{$field}; } else { return $extended->$field( @_ ); } }; bless( $closure, $class ); return $closure; }