{ my %cache; sub heavy_lifting { my $arg = shift; return defined $cache{ $arg } ? $cache{ $arg } : $cache{ $arg } = grunt($arg); } #### sub heavy_lifting { my $self = shift; my $arg = shift; return defined $self->{ _heavy } ? $self->{ _heavy } : $self->{ _heavy } = $self->grunt( $arg ); }