sub set_foo { my ($self, $newfoo) = @_; $self->[1] = localtime(); # track last change $self->[0] = $newfoo; $self->_recalculate_bar(); } sub get_foo { $self->[2] = localtime(); # track last access return $_[0]->[0]; }