002
18.09.2004, 12:19 Uhr
GateKeeper
|
Ok. du hast das richtig verstanden. hier nochmal mein Code:
Code: |
use Cwd;
$curdir = getcwd() ;
|
Deswegen habe ich Cwd::getcwd() geschrieben. In den Perl-Docs steht jedenfalls, dass getcwd() und cwd() im Grunde gleich sind. Bei Einsatz von getcwd() bzw cwd() bekomme ich auch ein Verzeichnis zurückgegeben, aber dabei handelt es sich nur manchmal um das Skriptverzeichnis. In vielen Fällen habe ich plötzlich ein völlig anderes Verzeichnis erhalten. Es scheint mir deshalb das "Arbeitsverzeichnis" nicht zwingend das Verzeichnis des ausgeführten Skripts zu sein (vielmehr irgendein Verzeichnis, in dem der Server gerade arbeitet).
Wie zu erfahren war gibt es jedoch eine zweite Möglichkeit das Ausführungsverzeichnis zu erhalten: Die Variable $0 enthält nämlich den Pfad + Dateinamen zum Skript. Wenn ich auch nicht bestätigen kann, ob das plattformübergreifend funktioniert, so funktioniert es zumindest unter Win32. Mit einer RegularExpression kann man nach Auslesen des Skriptdateipfades das Verzeichnis extrahieren. Meine Lösung ist nun etwas aufwendiger, sollte dafür jedoch für W32 u. die meisten Unix-Server funktionieren:
Code: |
$CONF_init = 0 ; $CONF_Path = $0 ; # Dateipfad zu diesem Skript auslesen
$CONF_Path =~ s/[\/\\][^\/\\]+$// ; # Dateinamen und letzten Slash "/" bzw. Backslash (für W32) abhacken
$CONF_Path = $CONF_Path . '/GetConf.pl' ; # Konfigurationsdateinamen anhängen
do $CONF_Path ; # Serverpfade aus der Konfigurationsdatei übernehmen
if ($CONF_init != 1) { # Prüfen, ob die Konfigurationsdatei erfolgreich ausgelesen wurde die "Konfigurationsdatei nicht gefunden in Pfad: $CONF_Path" ; }
|
Dieser Post wurde am 18.09.2004 um 12:22 Uhr von GateKeeper editiert. |