sub content { my $self = shift; if (@_) { my $set = shift; if (isa($set,"CODE")) { # fixed :-) &$set for $self->{'content'}; # Code to modify content (as $_) gets executed } else { $self->{'content'} = $set; # Direct set } } $self->{'content'}; }