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...