Modul-Verzeichnisse
Chris
- perl
Hallo,
ich wollte gerade mal schauen, in welchem Verzeichnis die Standard-Module bei mir liegen. Dabei wurde ich von sechs (!) verschiedenen Verzeichnissen überrascht. Wozu soviele verschiedene, und wir werden dort die Module sortiert? Bei mir gibt es folgende:
/usr/local/lib/perl/5.8.8
/usr/local/share/perl/5.8.8
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.8
/usr/share/perl/5.8
Eigentlich wollte ich mir einen schönen Ort suchen, wo ich meine eigenen Module, die ich häufiger brauche, hinpacken kann, aber nun bin ich verwirrt. Was passiert bei einem Upgrade mit "/.../5.8.8" Wird das dann gelöscht, oder umbenannt?
Würde mich freuen, wenn ihr mich ein bisschen aufklären könnt, ich habe leider nichts dazu gefunden :)
Schöne Grüße
Chris
hallo,
ich habe leider nichts dazu gefunden :)
Dir ist SELFHTML bekannt?
Grüße aus Berlin
Christoph S.
Dir ist SELFHTML bekannt?
Hallo Christoph,
natürlich ist mir selfhtml bekannt. Danke für den Link, aber die Mechanismen, um @INC zu erweitern, wie "use lib" und "perl -I/dir", sind mir bekannt.
Mich interessiert zum Einen, warum es so viele verschiedene Verzeichnisse für eigentlich nur eine Funktion (nämlich die Module) gibt. Und zum Anderen, in welches dieser vielen Verzeichnisse ich nun meine eigenen reinpacken sollte, damit ich nicht in jedem Skript "use lib ..." schreiben muss. Deshalb die Frage zum Upgrade, was dann mit dem Verzeichnis ".../5.8.8" passiert.
Und zu diesen Fragen habe ich keine Antwort gefunden, auch nicht in dem Link von dir.
Viele Grüße
Chris
Mich interessiert zum Einen, warum es so viele verschiedene Verzeichnisse für eigentlich nur eine Funktion (nämlich die Module) gibt.
Das musst du in deinem Falle den fragen, der Perl eingerichtet hat. Bei mir gibt's nur zwei Modulverzeichnisse: c:/Perl/lib (für alle vorinstallierten) und c:/Perl/site/lib für von mir ergänzte Module (ActivePerl 5.8.8 und WinXP Home).
Und zum Anderen, in welches dieser vielen Verzeichnisse ich nun meine eigenen reinpacken sollte, damit ich nicht in jedem Skript "use lib ..." schreiben muss.
Wenn ungewöhnlicherweise alle von dir genannten Verzeichnisse in @INC enthalten sind, ist es prinzipiell egal, wo du neue Module installierst. Bindest du sie mit use ein, muss sich das gesuchte Modul in irgendeinem dieser Pfade befinden, ein Erweitern von @INC ist unnötig. Ansonsten liest sich das Ganze wie ein mehrfach aktualisiertes Perl (von 5.00x auf 5.8 auf 5.8.8), ich würde dann dazu tendieren, dass die Modulpfade die mit der aktuellsten Versionsnummer sind. Verwendest du zum Installieren von Modulen die in perlmodinstall genannten Automatismen, musst du dir übrigens keine Gedanken um die Pfade machen.
Deshalb die Frage zum Upgrade, was dann mit dem Verzeichnis ".../5.8.8" passiert.
Es wird vermutlich bestehen bleiben (wie die alten '../5.8' und '../5' auch). Ob es in @INC gespeichert wird, wage ich zu bezweifeln.
Siechfred