sub STORE { my ($self, $key, $val) = @_; # An inline dispatch table ({ foo => sub { $self->[1] = localtime(); # track last change $self->[0] = $val; $self->_recalculate_bar(); }, # ...any other keys... }->{$key} or sub {croak (ref $self) . " has no $key member"} )->(); } sub FETCH { my ($self, $key, $val) = @_; ({ foo => sub { $self->[2] = localtime(); # track last access return $self->[0]; }, # ...any other keys... }->{$key} or sub {croak (ref $self) . " has no $key member"} )->();