sub plugin { my $self=shift; unless $self->{plugin} { my $ok = eval "require $Plugin_Package;"; die("error load $Plugin_Package\n$@") unless $ok; $self->{plugin} = $Plugin_Package->new(); } return $self->{plugin}; } #... sub get_key { # ... $self->plugin()->some_method(); # ... }