Artikel im Internet unter http://www.hidemail.de/blog/goto-perl.shtml.
Mittwoch, 30.5.2007, 13:18:43 Uhr

goto in Perl oder: Wie erzeuge ich Spaghetti-Code


Der Befehl goto ist vielen wahrscheinlich auch aus anderen Sprachen bekannt und erlaubt das Springen zu einer Codestelle im Script.
Allerdings: Der Befehl goto ist eigentlich DER Befehl, der für ineffiziente und unübersichtliche Programmierung steht.

Syntax
goto SPRUNGMARKE;
wobei die Sprungmarke als
SPRUNGMARKE:
im Code steht.


START:
print "Der Anfang\n";
goto MITTE;

ENDE:
print "Das Ende\n";
exit;

MITTE:
print "Die Mitte\n";
goto ENDE;


Ausgabe:
Der Anfang
Dir Mitte
Das Ende

Wie man im Beispiel sieht, bringt goto etwas Verwirrung in das Script, man hätte es auch leichter haben können. Generell kann man sagen, daß es eigentlich immer (ich hab noch keinen anderen Fall erlebt) auch ohne goto geht, wenn man Schleifen oder if-Verzweigungen verwendet.

Nächstes Beispiel

$summe=0;

for ($i=0;$i<10;$i++){
if ($i <5){goto KLEINER;}
print "\$i ist größer oder gleich 5, \$i = $i\n";
Zurueck:
}
print "Die Summe aller Zahlen kleiner 5 ist $summe";
exit;

KLEINER:
print "\$i ist kleiner 5, \$i = $i\n";
$summe+=$i;
goto Zurueck;


Es wird 5 mal die Zeile "$i ist kleiner 5..." ausgegeben und 5 mal "$i ist größer oder gleich 5..." und schließlich die Summe aller Zahlen kleiner 5, also 10.

Wie man sieht wird in der Schleife immer per goto in den Programmteil KLEINER: gesprungen und dann wieder zurück zu Zurueck: ... sehr unelegant! Man hätte dieses Problem besser mit einer Unterfuntion gelöst.



Artikel im Internet unter http://www.hidemail.de/blog/goto-perl.shtml.