Struppi: Dynamisch Klassen überladen?

Beitrag lesen

use common; # soll immer im controller und auch in allen
            # und moeglichst auch in den unterklassen vorhanden sein
our @ISA = qw( common );

Ich würde hier entweder use base qw(common) oder use parent qw(common) verwenden.

use $driver;

Das geht nicht, i.d.R. bietet sich hier soetwas an

eval "use $driver;";  
die $@ if $@;  

our @ISA = $driver;

und dann push @ISA, $driver;

Kann mir jemand sagen wie man den driver ordentlich in den controller laden kann?

z.b. so:

#!/usr/bin/perl -w  
use strict;  
package controller;  
sub new {  
    my ($class,$driver) = @_;  
  
    my $self = {};  
    bless $self,$class;  
  
    eval "use $driver;";  
    die $@ if $@;  
    push @controller::ISA, $driver;  
  
    return $self;  
}  
  
  
  
package main;  
my $c = controller->new('myTest');  
use Data::Dumper;  
print Dumper $c;  
$c->a;

myTest.pm:

package myTest;  
  
sub func_a {  
	print 'Hallo!', __PACKAGE__, "\n";  
}  
1;  

Struppi.