package MyClass; sub new { my ($class, @parameters) = @_; return bless {params => \@parameters}, $class; } sub fetch { my $self = return $self->{'cache'} //= do { sleep 1; warn "cache miss. Generating value...\n"; _gen_value($self->{'params'}) #; Generate the expensive value and store it in the cache. }; }