LanX: Pfad des aktuellen Skripts zu Modulpfaden hinzufügen

Hi

ich habe ein grösseres Script jetzt endlich in Einzelmodule zerlegt und die Module liegen im gleichen Directory.

jetzt versuche ich dem script beizubringen dass es die module auch dort findet wo das script liegt...

use lib $0;# kompletter pfad des scripts

scheitert daran dass $0 auch den Namen des scripts beinhaltet.

$progDir=$0; # kompletter pfad des scripts
$progDir=~s//[^/]*$//; #scriptnamen löschen
use lib $progDir;

scheitert an 'Empty compile time value given' weil $progDir zum
Zeitpunkt der Compilierung noch nicht bekannt ist.

kennt ihr eine dynamische Lösung  (ohne den Modulpfad redundant hinterlegen zu müssen)???

Bye
 rolf

  1. ich habe ein grösseres Script jetzt endlich in Einzelmodule zerlegt und die Module liegen im gleichen Directory.

    Wie sieht's mit use lib './'; aus?

    Struppi.

    1. Hi

      Wie sieht's mit use lib './'; aus?

      das ist das workingdirectory, nicht das Directory wo das ausgeführte script liegt...

      Tschau
      rolf

  2. Hallo Rolf,

    ich habe auch lange mit diesem Problem kämpfen müssen, und habe eine für mich passende Lösung gefunden:

    use FindBin;
    use lib $FindBin::Bin. '/modules';

    Im Ordner /cgi-bin/modules/ lege ich nun meine eigenen Perl-Module ab, und kann diese dann per "use" einbinden.

    Das Modul FindBin ist Bestandteil einer Perl-Installation (zumindestens ab perl5), und sollte somit auf jedem Server vorhanden sein.

    Gruß
    Helmut Weber

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. Hallo Helmut

      use FindBin;
      use lib $FindBin::Bin. '/modules';
      Im Ordner /cgi-bin/modules/ lege ich nun meine eigenen Perl-Module ab, und kann diese dann per "use" einbinden.

      Bei mir machts leider keinen Sinn alle Module verschiedener Programme zentral zu sammeln :(

      Da kämen sich auch verschiedene Versionen ins gehege...

      Das Modul FindBin ist Bestandteil einer Perl-Installation (zumindestens ab perl5), und sollte somit auf jedem Server vorhanden sein.

      kann ich mit FindBin auch den Pfad des ausgeführten scriptes einbinden?

      tschau
       rolf

      1. Hallo Rolf,

        kann ich mit FindBin auch den Pfad des ausgeführten scriptes einbinden?

        Genau das macht $FindBin::Bin ja!
        Lass Dir mal mit "print $FindBin::Bin;" das Verzeichnis ausgeben, dann wirst Du schon sehen, ob die Verwendung dieses Moduls der richtige Weg ist.

        Gruß
        Helmut Weber

        --
        -------------------------------------------
        Mode ist eine Variable, Stil eine Konstante
        1. Hallo Helmut

          kann ich mit FindBin auch den Pfad des ausgeführten scriptes einbinden?

          Genau das macht $FindBin::Bin ja!

          ahhh ... /cgi-bin hatte mich etwas verwirrt ... bin wohl noch nicht ganz wach...

          Lass Dir mal mit "print $FindBin::Bin;" das Verzeichnis ausgeben, dann wirst Du schon sehen, ob die Verwendung dieses Moduls der richtige Weg ist.

          Ich glaubs dir auch so.

          VIELEN DANK :)

          Tschau
           rolf