hotti: Danke!

Beitrag lesen

hi,

Oder sind Mozilla, Firefox und Gecko gar drei Browser derselben Familie (mit gleicher Funktionalität)?

Da gibts bestimmt irgendwo in den Weiten des Internet gepflegte Seiten, wo das alles steht. Btw., die Angabe UserAgent ist nur als Hinweis zu sehen, das kann im UA (naja, nicht in Jedem) selbst festgelegt werden, als was der sich ausgibt. Genauso die Variable HTTP_REFERER, kann total verbogen sein, muss nicht stimmen.

Fürs CGI-Programmieren interessante Vars in ENV sind jedoch beispielsweise

SERVER_NAME
HTTP_HOST
DOCUMENT_ROOT
SCRIPT_NAME
REQUEST_URI

um maln paar zu nennen. Und selbstverständlich kannst Du auch eigene Variablen in %ENV ablegen, die sind global. Um Verwechslungen auszuschließen, nehme ich dazu nur Kleinbuchstaben.

Noch ein Tipp von mir, zu globalen Variablen:

Sinnnvoll, wenn für einen komplexen Prozess mehrere Funktionen _hintereinander_ aufgerufen werden. Da ist eine globale Variable übersichtlicher als lokale Variablen von einer Funktion über die Andere mitzuschleifen. Beispiel Ausgabe einer HTML-Seite:

cgiHeader();
htmlHeader();
htmlFooter();

Alle drei brauchen bei mir den Wert für Last-Modified, also tu ich den eigens in $ENV{lastmod} und gut. Das passiert bereits noch vor dem ersten Funktionsaufruf in meinem Basis-Modul. Natürlich könnte ich auch mit

use vars qw($lastmod);

dafür eine extra Variable erzeugen, aber wozu, den hash %ENV gibts doch sowieso schon global.

Bei Funktionsaufrufen aus einer Funktion in eine Subfunktion und zurück in die aufrufende Funktion hingegen sind globale Vars zu vermeiden.

Hotti