Michael Schröpl: Beenden von Kontrollfluß-Ebenen

Beitrag lesen

Hi Alain,

Also ist exit nicht unbedingt notwendig,wenn im cgi 100% einen true wert gefunden wird?

"exit" beendet den Lauf des Perl-Skripts und setzt den Return-Code an den Aufrufer.
Was der aufrufende Webserver mit diesem Wert anfangen kann, das sei in diesem Kontext dahin gestellt; die CGI-Spezifikation sagt nichts Spezielles hierüber aus.

Oder wäre allenfalls "EOF" am Schluss für das richtige beenden eines cgi's zuständig?

Was meinst Du mit "EOF"? Ein Befehl dieser Art ist mir nicht bekannt.
Falls das Skript das Ende des Quelltextes erreicht, dann wird es allerdings ebenfalls beendet.

"exit" an der passenden Stelle kann Dir ersparen, für die Alternative ein riesiges, unübersichtliches "if"-Konstrukt aufzubauen.
Ich halte das kontrollierte Herausspringen aus Kontrollstrukturen keineswegs für "unsauber" - geeignet angewendet und hinreichend gut dokumentiert macht es den Quelltext sogar deutlich lesbarer.

Das mit "return" kapier ich nähmlich nicht ganz.

"return" setzt ebenfalls den Returncode, genau wie "exit". Aber es beendet nur die aktuelle Kontrollfluß-Ebene, nicht jedoch alle (wie exit). Wenn Du innerhalb einer Funktion "return" ausführen läßt, dann wird das Skript an der Stelle fortgesetzt, wo die zuvor aktive Funktion aufgerufen wurde - genauso, als hätte der Perl-Interpreter das Ende des äußersten Blocks dieser Funktion erreicht.

Was insbesondere bedeutet: Innerhalb des Hauptprogramms haben "return" und "exit" dieselbe Wirkung, weil dort nur eine Kontrollfluß-Ebene 'offen' ist.

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.