Thread Ausführen von externem Code.
(8 answers)
Opened by topeg at 2007-08-22 22:19 topeg+2007-08-23 11:39:23-- 1) Ja eval{} führt keine neue Instanz aus. Es Funktioniert wie ein try: catch: in anderen Sprachen. Auch Syntaxüberprüfung findet innerhlab eines eval {} blockes statt 2) Klar lässt sich der Code auch anders schreiben, es ging hier eher um das Prinzip das eval sehr wohl nützlich ist. Und es mag spezielle Fälle geben wo man auf eval {} angewiesen ist. Auch wenn die selten sind. 3) Auch ein String eval ist erstmal nicht gefährlich. Man kann damit mit sehr wenig Code neuen Code Intern Generieren und ausführen lassen. Das kann viel Arbeiten sparen. In Bestimmten fällen kannst du damit sogar die Performance erhöhen. Kann dir aber auf der schnelle auch kein Beispiel geben, da ich darin nicht so geübt bin. Das was du damit verhinderst ist wenn einer String eval nutzt und damit Code ausführt der aus benutzereingaben stammt. Wenn das aber unbedingt jemand machen möchte ist es nicht die Frage ob er nicht sowieso einen weg drumherum findet. Ich würde jedenfalls die Plugin Authoren nicht behindern wollen wenn sie es für gute Zwecke nutzen. Aber das musst du ja Wissen. Ich hab dir nur Gründe genannt wofür Plugin Authoren eval nutzen könnten, und die reine benutzung von eval ist auch erstmal nicht sofort gefährlich. Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|