Ein Verzeichnis?
Peter Mairhofer
- perl
0 Erwin
Hallo!
Meine Perl-Script verwenden alle eine functions.lib, die im gleichen Verzeichnis liegt und so eingebunden wird:
include './functions.lib';
Wenn ich jetzt das Perl-Script von irgendeinem Verzeichnis aus aufrufe, dann jammert der Interpreter logischerweise jedesmal, dass er diese Datei nicht findet. Ausserdem werden des Öfteren ins *Programmverzeichnis* geschrieben.
Ich hasse es irgendwie, den Aufruf zu
cd /path/to/script; ./myscript.pl
erweitern zu müssen, vor allem weil die Scripts verschieden aufgerufen werden, von PHP aus, von cron etc und nur wenn ich dann das Script doch wo anders ablege, dann kann ich wieder alle Pfade umändern.
Gibt es nicht die Möglichkeit, am Beginn des Perl-Script herauszufinden, wo das aktuelle Script liegt und das Verzeichnis für die Zeit der Scriptausführung als aktuelles Verzeichnis zu nehmen?
Ptr
hi,
Gibt es nicht die Möglichkeit, am Beginn des Perl-Script herauszufinden, wo das aktuelle Script liegt und das Verzeichnis für die Zeit der Scriptausführung als aktuelles Verzeichnis zu nehmen?
$0 zeigt, je nachdem von wo das Script aufgerufen wurde den Dateinamen des Scripts:
aufruf im aktuellen Verz.:
eisbaer:rfrost {103} ./null
./null
aber nun von /tmp aus
eisbaer:rfrost {105} cd /tmp
eisbaer:tmp {106} /local/home/rfrost/null
/local/home/rfrost/null
Du könntest mit
use File::Basename;
my $libdir = dirname $0;
und dann
use lib $libdir;
Das Libverzeichnis einbinden.
Gruß, Erwin