Jens Nödler: eval()

Hi Forumer!

Ich habe folgenden Hinweis für die Programmierung in Perl unter http://www.linux-magazin.de/ausgabe/1998/03/CGI/cgi1.html gefunden:

<zitat>
Steht die Header-Ausgabe am Anfang und der kritische Teil des Skripts inmitten eines eval-Konstrukts, kann nichts schiefgehen: Läuft das Skript auf eine die-Anweisung, springt es aus dem eval-Block heraus und hinein! in die nachfolgende if-Bedingung, denn $@ führt in diesem Fall den Wortlaut der Fehlermeldung:

use CGI qw/:standard/;
  
print header();
    
eval {
    #...
    print p("Noch geht's gut ...\n");
    #...
    die "Schwerer Fehler!";
};
    
if ($@) {
    print h1("Fehler: $@");
}

</zitat>

Ich habe wirklich noch nie gelesen, dass man alles in die eval() funktion packen sollte und es auch noch nie in fremden Scripten gesehen.

Wie seht ihr die Sache? Benutzt ihr eval() in der angegebenen Art?

mfg
jens

  1. Hi!

    Ich habe wirklich noch nie gelesen, dass man alles in die eval() funktion packen sollte und es auch noch nie in fremden Scripten gesehen.

    Wie seht ihr die Sache? Benutzt ihr eval() in der angegebenen Art?

    In der Doku zu Perl wurde das kurz angeschnitten.
    Soetwas nennt man auch Exception. Wenn ein CodeTeil einen Fehler verursachen würde, kann man diesen Abfangen und entsprechend darauf reagieren. Soetwas gibt es in den Meisten Programmiersprachen und auch im JavaScript von Explorer 5 bzw. im neuen JavaScript 1.4 von Netscape.

    Grüße
      fred

    1. Hi!

      In der Doku zu Perl wurde das kurz angeschnitten.
      Soetwas nennt man auch Exception. Wenn ein CodeTeil einen Fehler verursachen würde, kann man diesen Abfangen und entsprechend darauf reagieren.

      Bleibt nur noch die Frage, ob es wirklich sinnvoll ist. Naja, ich werde mal ein Script mit eval() schreiben und mir die Vorteile ansehen.

      Danke für deine Antwort.

      mfg
      jens

      1. Hi!

        Bleibt nur noch die Frage, ob es wirklich sinnvoll ist.

        Warum nicht?
        Oft ist man sich nicht 100%ig sicher, ob ein Code in jeder situation funktioniert. Ich denke da an Datanbanken. Jemand möchte einen Datensatz ändern, der geraden von jemand anders geändert wird. Das Programm gibt, je nach Programmiersprache und DB-Modell, einen Laufzeitfehler zurück der zum Absturz führen würde. Doch nun kann man das ganze mit einer Exception auffangen und entsprechend darauf reagieren.

        Du magst diese Vorstellung nicht besonders, oder?

        Grüße
          Manfred

        Hi!

        In der Doku zu Perl wurde das kurz angeschnitten.
        Soetwas nennt man auch Exception. Wenn ein CodeTeil einen Fehler verursachen würde, kann man diesen Abfangen und entsprechend darauf reagieren.

        Bleibt nur noch die Frage, ob es wirklich sinnvoll ist. Naja, ich werde mal ein Script mit eval() schreiben und mir die Vorteile ansehen.

        Danke für deine Antwort.

        mfg

        »»  jens

        1. Hi Manfred!

          Bleibt nur noch die Frage, ob es wirklich sinnvoll ist.
          Warum nicht?
          [...] Doch nun kann man das ganze mit einer Exception auffangen und entsprechend darauf reagieren.

          Du magst diese Vorstellung nicht besonders, oder?

          Na gut. Du hast mich überzeugt... ;-)

          mfg
          jens