Meise2000: Variable im Packagenamen?!

Beitrag lesen

Hallo Leute,

ich möchte eine Subroutine (z.B. "evaluate($p1,$p2,$p3)") aufrufen, die in einem anderen Package (z.B. "myPackage1") liegt. Normalerweise mache ich das so:

my $result = myPackage1::evaluate($p1, $p2, $p3);

Jetzt habe ich mehrere Packages ("myPackage1", "myPackage2", "myPackage3"...) und alle haben eine Subroutine "evaluate($p1,$p2,$p3)". Die Entscheidung, welches Package ich verwende, hängt von einer Variablen (z.B. $package) ab. Wie bekomme ich  denn nun den Aufruf hin?! Die Variante

my $result = eval("$package::evaluate($p1,$p2,$p3)");

klappt leider nicht. Gibt es überhaupt eine Lösung für mein Problem?

Gruss,
Meise.

PS:
Mir ist schon klar, dass ich das ganze auf über ein if-elsif-elsif...else hinbekomme, aber das ist ungünstigt, da $package aus der Konfiguration heraus belegt werden soll - und ich möchte nicht immer den Quellcode erweitern, wenn ich ein neues Module (myPackageN) erstellt...