1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
sub new { my $class = shift; my $self = bless {}, $class; $self->{plugin} = $Plugin_Package->new(); # gleich return $self; } sub init { # ... $self->{plugin} = $Plugin_Package->new(); # oder später $self->{plugin}->some_method(); # ... } sub get_key { # ... $self->{plugin}->some_method(); # ... } sub reset { # ... $self->{plugin}->some_method(); # ... } sub run { # ... $self->init(); # ... $self->getc(); # ... $self->reset(); }
Quoteist es egal, ob ich in so einem Fall das Plugin-Objekt gleich in der Konstruktor-Methode erstelle oder erst später?
$self->{CGI} = CGI->new();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
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(); # ... }