Hallo,
Wie böse?
eval, war in meinen nächtlichen Überlegungen nun auch mein letzter Lösungsweg. Habe gehofft, dass das auch gescheiter geht.
eval "bäh";
eval { gut(); };
Der Interpreter scheint es auch zu schaffen. Sonst irgendwelche Problemherde?
s.o., bei eval "" musst du genau aufpassen was du machst!
wahrscheinlich geht das sehr auf die Kosten der Wartbarkeit und der Fehlerbehebung.
my $o = new palim();
$o->doPalim();
eval { $o->doBlub(); };
print ( ($@ =~ /(.*?)\ at\ /)[0] . "\n" ) if $@;
hier hab ich nur das "at line 65 [..] ./bla.pl" weggeschnitten, das sah so blöd aus.
$o->namespaceMe('blub');
$o->doBlub();
das war ein test, dass es auch funktioniert.
Das mit dem Namespace finde ich ja eine interessante Idee - muss ich mir merken.
welche andere möglichkeit hast du noch zu vererben ?!
Ich hätte einfach die Konstanten in ein Array gesetzt und in einer Schleife mit eval die packages definiert. Mehr als das jedes package von der Superklasse erbt und eine eigene Konstante definiert bekommt, hätte ich gar nicht gemacht.
naja so richtig hab ich das nicht verstanden. du bastelst dir ein package zusammen, dann willst du objekte daraus machen (logisch ^^):
my $packageName = 'neueKlasse';
eval << "PACK";
package $packageName;
use vars qw(\@ISA);
\@ISA = qw(deineUltraHochWichtigeBasisKlasse);
sub new()
{
my \$class = shift;
#Konstruktor der Basisklasse aufrufen, falls du das brauchst
bless ( (\$class)->SUPER::new(), \$class );
}
PACK
my $newObj = $packageName->new();
(hab ich jetzt nicht getestet, war zu faul)
vielen Dank jedenfalls.
bitte :D
gruss
Swiss Army Chainsaw
Terrorific!
Given a cow full of milk, should the milk un-cow itself, or should the cow milk itself?