Struppi: Funktion ausfuehren, deren Namen nur als Skalar bekannt

Beitrag lesen

Naja, er müßte in halt immer schreiben:

$hash->{funktiosname} = sub () { .... };

und könnte diese dann auch nicht mehr in verschiedenen Dateien unterbringen.

OK, wenn man das so sieht. Die 15 Zeichen mehr habe ich auch überlebt :-)

Ich halte meine Variante aber deshalb für komfortabel, weil man die Funktionen die zusamengehören in ein Modul packen kann. Gerade bei einem grossen Projekte wo ständig neue Features dazu kommen können ist dies ein unschlagbarer Vorteil, du willst ja nicht alle Funktionen in eine Datei packen.

[...] ich will möglichst vermeiden, irgendwelche Probleme zur Laufzeit zu bekommen.

Was sollen denn da für Probleme auftauchen?
Letztlich schmeisst Perl ganz normal die Fehler oder überseh ich da was?

Naja, wenn ich darauf achte, dass mein Perl-Script möglichst wenig Input bekommt, den es nicht kontrollieren kann, kann ich überhaupt vermeiden, dass Fehler während der Laufzeit auftreten. Ich finde immer, dass Laufzeitfehler am schlimmsten zu finden sind, und deswegen schreibe ich meine Scripte so, dass möglichst alles in einer kontrollierten Umgebung abläuft.

Wieso? Die Fehlermeldung zur Laufzeit sind doch die gleichen. Das CGI Programme schwer zu debuggen sind ist ja nichts neues, aber ob die Module zur Laufzeit oder vorher benutzt werden spielt nur eine untergeordnete Rolle (wie gesagt ich benutz das auch gar nicht mehr so)

Bsp (zugegeben einfach):
Du hast ein Perl-Script, dass zur Laufzeit irgendwelche Dinge nachlädt (womöglich noch dynamisch). Wenn das nicht klappt, hast du gleich mehrere Fehlerquellen. Lädt es hingegen "konstante" Module, dann hast du eine potentielle Fehlerquelle ausgeschlossen. Die Performance ist hierbei nicht mehr wirklich entscheidend: Wenn du darauf wirklich achtest, solltest du:

Du redest von Syntax Fehlern oder?
also ich hatte bei der entwicklung eigentlich nie Probleme, die ich nicht auch mit ganz normalen Modulen gehabt hätte. Da wie gesagt die Fehlermeldungen ja trotzdem kommen.

Um die Perfomrance ging es mehr auch eher weniger, wobei natürlich nicht jedes mal 380KB Perl skripte kompilieren will, um evtl. eine 5-zeilige Funktion aufzurufen.

Wie gesagt aber einer gewissen Größe wirst du gar nicht umhin kommen Modular und je nach Fall verschiedene Module zu laden. Und ich war auf der Suche nach einer Methode dies möglichst zentral zu steuern. Bisher ist mein Ansatz eigentlich ganz praktisch gewesen.

a) nicht in Perl programmieren, sondern eine vorab kompilierbare Sprache nehmen oder:

kann ich nicht gut genug, zumal da die Plattformunabhänigkeit verloren ginge.

b) die Module gleich im Speicher des Webservers halten (bei CGI-Skripten). Dann kannst du auch gleich alle Module laden, und das dynamische laden ist unnötig.

wie gesagt ich lade nur dynamisch insofern, dass ich nur die Module die für eine Funktion gebraucht werden geladen werden. Macht in meinen Augen auch Sinn. Ob mein Provider mod_perl unterstützt weiss ich gar nicht und ob das Skript dann läuft auch nicht.

Struppi.