Thread eval is evil: Willkommen auf der dunklen Seite?! (19 answers)
Opened by Ronnie at 2006-11-22 21:21

sid burn
 2006-11-23 16:08
#71928 #71928
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
mit dem goto kann man "beeinflussen", welches @_ genommen wird, aber allein die Tatsache dass die Parameter automatisch übergeben werden, kann auch goto erreicht werden. Das ist also kein wirkliches Argument für goto.

Das @_ als Prameter übernommen wird wenn man nur &funktion schreibt ist mir bekannt. Allerdings war dies nicht der Grund warum ich "goto" empfohlen habe.

goto wurde deswegen empfohlen weil es die aktuelle Funktion ersetzt und nicht nur einfach eine neue Funktion aufruft. Insgesamt soll es schneller sein. Weiterhin sollte schon viel Früher speicher freigegeben werden. Und nicht erst wenn die AUTOLOAD Funktion beendet wird.

Ich weiß nicht mehr wie der vorgang genau hieß. Ich glaube "Profilieren"??? Jedenfalls wenn du irgendwie eine Liste erzeugst wann welche Funktion aufgerufen wurde, dann würde bei der Benutzung von "goto" niemals AUTOLOAD in der Liste erscheinen. Sondern sofort die erstellte Methode.

Von aussen sieht es also so aus als wenn die Funktion schon immer existiert hat, und man bekommt nciht mit das die Funktion erstellt wurde.

Das ganze war dann noch für die Funktion "caller" wichtig. Da es beim Rücksprung auch "AUTOLOAD" anzeigen würde. Bei goto erscheint dann aber kein "AUTOLOAD".

Genau dieses verhalten wurde genutzt um Perl zu erweitern. Man konnte eine Art Interface schreiben wie in anderen programmiersprachen. Und wenn eine Subroutine nicht überschrieben wird, gibt es beim Compilieren schon eine Fehlermeldung. Wie das ganze aber jetzt genau lief wuste ich nicht mehr.

Insgesamt habe ich mir beim durchlesen einfach nur gemerkt das die Verwendung von "goto()" besser ist als die Funktion einfach nur aufzurufen.


Das Zusätzlich noch @_ übergeben wird, habe ich so noch genannt. Ob goto diese Funktionalität nochmals zusätzlich bietet oder ob jetzt nur das & vor der Funktion dafür zuständig ist, ist mir ehrlich gesagt aber auch ziemlich egal.

Funktionen müssen bei goto mit & aufgerufen werden (sonst wären es LABEL) und & bietet diese Funktionalität an sich auch schon. Von daher ist es doch volkommen Wurst wer jetzt genau @_ übergibt, oder? ;)\n\n

<!--EDIT|sid burn|1164290973-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread eval is evil: Willkommen auf der dunklen Seite?!