package Persist; ... sub uuid { # returns a unique ID for the object. should be # overridden by the subclass }; sub load # load object from persistent store $self->{_change} = 0; }; sub save { my $self = shift; return unless $self->{_change}; # save object to persistent store $self->{_change} = 0; }; sub mark { my $self = shift; # mark and item as changed so it should be saved $self->{_change}++; };