Peter Mairhofer: Ein Verzeichnis?

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

  1. 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

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?