Hallo Mark,
@var = ("Warenkorb","Rechnung"); auszug aus datenbank
+--------------------------------------+
|if($var[0] eq "Warenkorb") { |
|meinShopWarenkorb(); |
|} |
| | so möchte ich es nicht machen
|if($var[1] eq "Rechnung") { |
|meinShopRechnung(); |
|} |
+--------------------------------------+
Du möchtest also abhängig vom Inhalt einer Variable in ein entsprechendes Unterprogramm springen. Wie Du richtig erkannt hast, ist eine merhfache IF-Abfrage kein schöner Stil, und auch nicht sehr Wartungsfreundlich.In manchen Programmiersprachen hilft hier eine SWITCH/CASE-Anweisung, die in Perl allerdings nicht unterstützt wird.
Du kannst aber in Perl mittels einer Hash-Variable, in der Referenzen zu Unterprogrammen hinterlegt sind, wunderbar diesen Zweck erfüllen:
my $var = "Rechnung"; # Der entsprechende Wert aus der DB
my %subroutine = (
'Warenkorb' => &New,
'Rechnung' => &Edit,
...
);
if ( $subroutine{$var} ) { $subroutine{$var}->() }
else { StandardRoutine() }
Gruß
Helmut Weber
-------------------------------------------
Mode ist eine Variable, Stil eine Konstante