Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12025[/thread]

Perl Rechner (Seite 2)

Leser: 1


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
betterworld
 2008-06-17 23:30
#111159 #111159
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
MauriZze+2008-06-17 17:21:12--
was bedeutet die?

"die" bedeutet "stirb!", bricht das Programm mit einem Fehler ab. Siehe perldoc -f die.

Ich sehe gerade, dass dies in "Projekte" ist. Da gehoeren eigentlich nur "größere" Programmierprojekte hinein, also verschieb ich Dich mal nach "Allgemeines zu Perl".
MauriZze
 2008-06-18 15:33
#111194 #111194
User since
2008-06-16
4 Artikel
BenutzerIn
[default_avatar]
danke, ich meinte zwar
$|++;

aber die wusste ich auch noch nicht ^^

@GwenDragon
thx, danke für die hilfe
murphy
 2008-06-18 17:54
#111226 #111226
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Hagen+2008-06-17 21:27:27--
Kann mir jemand erklären, warum "eval" ein schlechter Programmierstil ist?


Das "Blockeval" (eval { ... }) ist kein schlechter Programmierstil, sondern eine sinnvolle Möglichkeit zur Fehlerbehandlung.

Das "Stringeval" (eval "...") ist meistens schlechter Programmierstil. Zunächst einmal gibt es nur extrem selten Anwendungen, wo seine Verwendung nicht vermeidbar ist – in den meisten Fällen kann es zum Beispiel elegant durch das Benutzen von Codereferenzen ersetzt werden. Und die Vermeidung von eval "..." zahlt sich ferner dadurch aus, dass man von vornherein eine ganze Reihe von Sicherheits-, Debugging- und Performanceproblemen vermeidet:
- Da der String, den man an eval übergibt erst zur Laufzeit des Skriptes geparst und kompiliert wird, ist es bei mehrmaliger Verwendung des Codes auf jeden Fall langsamer als eine Codereferenz.
- Da der String erst zur Laufzeit kompiliert wird, werden auch syntaktische Fehler erst spät erkannt.
- Wenn man den String dynamisch zusammensetzt, muss man peinlich darauf achten, dass man keine Möglichkeit schafft, durch Benutzereingaben beliebigen Code in das Skript zu injizieren. Ausserdem ist das Auffinden von Fehlern in derartigem dynamisch generiertem Code aufwändig.

Andererseits ist das Stringeval natürlich ein mächtiges Werkzeug. Ich würde nicht soweit gehen, zu sagen, dass man es auf keinen Fall verwenden sollte, aber man sollte sich Gedanken darüber machen, wann es wirklich sinnvoll ist. Von Anfängern wird der Befehl einfach viel zu gerne misbraucht.

Bevor man zu eval greift, sollte man sich vielleicht einfach überlegen, ob man in einem äquivalenten C-Programm an der gleichen Stelle wirklich dynamisch Maschinenbefehle in einem Speicherblock platzieren und diese dann als Funktionspointer anspringen würde. Wenn man diese Frage guten Gewissens bejahen kann, ist auch die Verwendung von eval angebracht ;-)
When C++ is your hammer, every problem looks like your thumb.
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2008-06-16 21:07.