Beat: Umgang mit Parametern

Beitrag lesen

Es ruft diverse Unterroutinen auf im Modul up.pm. Diese Unterroutinen benötigen jeweils eine Teilmenge der im Hauptprogramm verfügbaren Parameter.
Ich sehe nun folgende Varianten:

  1. Aufruf der Unterroutinen mit genau den Parametern, die sie benötigen.
       In den Unterroutinen Lesen der Parameter mit my ($p1,p3,....) = @_;
       Vorteil: Genaue Übersicht über die verwendeten Parametern.
       Nachteil: Schreibarbeit, Änderung ggf. in Haupt und Unterprogramm

Du kannst eine Funktion nie anders aufrufen als mit Parametern, die in Bezug auf die Funktion gültig sind. Was du bei deinem Beispiel nicht erkennst, ist die blödisinnige Festnagelung auf eine Reihenfolge der Argumente.

  1. Aufruf aller Unterroutinen mit jeweils allen Parametern.
       Die Unterroutinen lesen nur die für sie notwendigen Parameter.
       Vorteil: Alle Aufrufe im Hauptprogramm identisch.
       Nachteil: ?

Speicherplatz. Was übergibst du bei func(%hash)? Eine Kopie.

  1. Keine Übergabe von Parametern im Hauptprogramm.
       Das Unterprogramm holt jeweils die für es notwendigen Parameter mit
          use CGI qw(param);
          my $p1=param('p1');
           .....
       Vorteil: Einfache Aufrufe im Hauptprogramm.
       Nachteil: ?

Du vertraust darauf, dass der inhalt der CGI Variable gewährleistet ist?

Welche Variante ist zu empfehlen?
Gibt es weitere, bessere Varianten?

Überlege dir den Vorteil, Funktionen in Modulen (und auch in anderen Subs) stets eine Hashreferenz zu übergeben.

modul_func( { key => $val1, key2 => $val2, } )

Für mich erschliesst sich übrigens der Sinn von ausgelagerten Funktionen nicht, es sei denn, diese sind nach Modulrichtilinien mit dokumentierter API versehen.

mfg Beat;

--
Woran ich arbeite:
X-Torah
   <°)))o><                     ><o(((°>o