Hallo PAF (patrickausfrankfurt)
Ich kenne mich use strict; leider überhaupt nicht aus. Ich lese auch desöfteren, dass man cgi.pm anstatt einer form-parse-sub wie in den Matt Wright Scripts benutzen sollte, jedoch sagt mir das (noch) absolut nicht. Kommt Zeit, habe ich auch das im Griff... aber erstmal Zeit haben, ne?
'use strict' sorgt dafür, daß Du nur Variablen verwenden kannst, welche auch deklariert sind, so ähnlich wie es z.B. in C notwendig ist.
Das erfolgt mit
my($skalar,@Array,%Hash);
Das ist insbesonders wichtig, falls Du mod_perl am Server alufen hast. Dort ist es nämlich so, daß das Script eigentlich nie wirklich beendet wird, solange der Server läuft. Jeder Subserver von Apache hat zwar seine eigene Kopie des Scripts laufen, aber beendet werden die i.d.R. nur, wenn der Apache beendet wird.
Wenn aber globale Variablen verwendet werden, wie dies der Fall ist, wenn Du nicht 'my' verwendest, dann passiert es, daß Du bei einem zweiten 'Aufruf' des Scripts mit alten Werten, noch dazu mit dennen eines anderen Subserver, arbeitest. Das kann recht witzige, aber normalerweise doch nervige Effekte zur Folge haben.
So 'nebenbei' hat die Verwendung von 'my' und 'use strict' auch zur Folge, daß Du recht schnell auf Schreibfehler bei Variablennamen kommst.
Deshalb der Tip:
Am Anfang jedes Scripts
#!/usr/bin/perl -w
use strict;
Da swar jetzt vielleicht eine etwas 'popularwissenschaftliche', sprich für den Theoretiker ungenaue, Erklärung, aber so im Wesentlichen triffst den Sachverhalt ;-)
Grüße nach Frankfurt
Klaus