#!/usr/bin/perl package main; use strict; use warnings; use AutoLoader; use Data::Dumper; # Deklariere die Methoden # damit diese von AUTOLOAD gefunden werden sub foo; sub bar; # diese methoden liegen als source in einem hash # solch hash könnte z.B. mit DB_File als Datei angebunden sein my %mh = ( foo => q( my $self = shift; $self->{FOO} = 1; print "foo! @_\n"; ), bar => q( my $self = shift; $self->{BAR} = 1; print "bar!\n"; ), ); my $mo = main->new; # Instanz der main class # jetzt gucken wir mal, ob UNIVERSAL::can die Methode findet my $code = $mo->can('foo') or die "no method found"; $mo->$code(arg => 123); print Dumper $mo; # weitere Kontrolle, ob Attribut hinzugekommen ist # methods in class sub new{ my $class = shift; my $self = bless{}, $class; return $self; } # overload AUTOLOAD sub AUTOLOAD{ my $self = shift; my $sub = our $AUTOLOAD; $sub =~ s/.*:://; # extrahiere Klassen Name if(exists $mh{$sub}){ # aus der Source den Code erzeugen und ausführen my $code = eval "sub{$mh{$sub}}"; $self->$code(@_); } else{ return undef; } }