sub new { my ($class) = @_; return bless({ ACCOUNT => undef, NAME => undef, BALANCE => 0, }, $class); } sub _access {{ my $self = shift; my $field = shift; if (@_) { $self->{$field} = shift; } return $self->{$field}; } sub account { splice(@_, 1, 0, 'ACCOUNT'); goto \&_access; } sub name { splice(@_, 1, 0, 'NAME' ); goto \&_access; } sub balance { splice(@_, 1, 0, 'BALANCE'); goto \&_access; } ...