sub AUTOLOAD { my ($self,$arg1) = @_ ; my @func = split(/\:\:/,$AUTOLOAD) ; my $f = $func[-1] ; my $fb = $f . "_beforeEvent" ; my $fa = $f . "_afterEvent" ; my $fo = $f . "_overEvent" ; print "FUNC : @func ($func[-1]) \n" ; print "Obj : " , $self->{'modclass'} , " ( $self->{'modobj'} ) \n" ; print "AUTOL : $AUTOLOAD | @_ \n\n" ; ### #Ausgabe vorher if ( $self->{'plugclass'}->can($fb) ) { print "Methode $self -> $fb vorhanden\n" ; $self->{'plugclass'}->($f . "_beforeEvent")($arg1) ; } ### #Eigentliche Funktion if ( $self->{'plugclass'}->can($fo) ) { print "Ausgabe OVERfunktion\n" ; $self->{'plugclass'}->$fo($arg1) ; } elsif ( $self->{'modobj'} && $func[-1] ) { print "Ausgabe Standardfunktion\n" ; $self->{'modobj'}->$f($arg1) ; } ### #Ausgabe nachher if ( $self->{'plugclass'}->can($fa) ) { print "Methode $self -> $fa vorhanden\n" ; $self->{'plugclass'}->$fa($arg1) ; } print "\n-----------\n\n" ; } sub DESTROY {} 1 ; Aufruf wäre so my $pobj = Plugin->new('TestClass','TestClassPlug') ; $pobj->t1('T1T1T1') ; $pobj->t2('T2T2T2') ;