Homepage Inspire-world | Forum
CGI/Perl Workshops Enviroment Variablen Script

 Inhaltsverzeichnis/Workshops Übersichtsseite/Enviroment Variablen Script
In diesem kleinen Workshop will ich einmal die Funktion und den Aufbau eines Enviroment (Umgebungsvariablen) Scriptes erläutern.

1. Zuerst einmal das Script in seiner einfachsten Form

#!/usr/bin/perl
print "Content-type: text/html\n\n";

foreach $key (keys %ENV) {  		
print"<b>$key</b>: $ENV{$key}<BR>\n";
}
Was macht nun dieses Script?

foreach Eine foreach Schleife durchläuft eine Liste solange bis alle Elemente durchlaufen sind. Die Ausgabe dessen erfolgt dann hier zwischen den geschweiften Klammern.

$key (keys %ENV) $keys = Schlüssel, erst wird die Variable $keys notiert und dahinter das was die $keys denn sein sollen. Hier in dem Falle sind diese als ein Hash %ENV angegeben. Hashes sind Listen von Elementen und werden mit dem vorangestellten % notiert.

In der zweiten Zeile werden dann die gefundenen ENV Werte ausgegeben. Zuerst wird der Schlüssel $key ausgegeben, danach der Wert zu dem Schlüssel.


Beispiel:
DOCUMENT_ROOT: /pfad/zu/dem/homeverzeichnis

1.1. ENV Variablen in der Praxis einsetzen

Nun haben wird die Scriptausgaben, hier will ich nun paar kleine Beispiele bringen für den Praxiseinsatz.

Nehmen wir an ich habe ein Script welches auf verschiedenen Servern eingesetzt wird und ich brauche einen Link im Script mit der vollen URL. Dazu würde dann folgender Link ausreichen:


<a href="http://$ENV{'HTTP_HOST'}$ENV{'SCRIPT_NAME'}">Linktext</a>

Hierbei spielt es dann keine Rolle ob das Script in z.B. http://www.domain.de/cgi-bin/script.pl eingesetzt wird oder wenn die URL so lauten würde: http://www.domain.de/cgi-bin/verzeichnis/unterverzeichnis/script.pl
TIPP!
So, wer sich nun die Scriptausgabe ansieht wird sehen das bei SCRIPT_FILENAME Der volle Serverpfad zu dem gestarteten Script steht.

Beispiel: SCRIPT_FILENAME: /home/pfad/htdocs/cgi-bin/verzeichnis/datei.pl

Nun brauch ich aber vielleicht den Pfad ohne den Dateiname (datei.pl oder andere). Was tun?
Nun mit dem Kleinen Codeschnipsel unterhalb kann ich den Dateiname aus dem Pfad entfernen.
$verz = "$ENV{'SCRIPT_FILENAME'}";
$verz =~s/\/password.\S+$/\//isg;
Brauche ich dann im Script den vollen Pfad zu dem Verzeichnis um z.B. weitere Unterverzeichnisse ansprechen zu können reicht die Angabe $verz die in dem Falle dann zurückliefert /home/pfad/htdocs/cgi-bin/verzeichnis/ So kann ich dann, wenn das Script auf einem anderen Server installiert wird, ohne große Konfigurationsanpassungen das Script nutzen - es findet ja quasi seine Pfade selbst.

Genauso kann ich umgekehrt auf tieferliegende Unterverzeichnisse verweisen:
$verz = "$ENV{'SCRIPT_FILENAME'}";
$verz =~s/\/password.\S+$/\/unterverzeichnis\/datei.cgi/isg;


 Zum Inhaltsverzeichnis/Workshops Übersichtsseite/Enviroment Variablen Script
Autor: Helmut Walter Homepage Inspire-world Fragen, Anregungen und Hinweise bitte in das Forum

Valid HTML 4.0! Valid CSS!