• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]Wo kommen perl pm-files hin?

harvey

Member
Hallo,
weiß jemand in welches Verzeichnis selbsterstellte bzw. aus anderen Quellen stammende pm-Files für perl installiert werden müssen? Und muß ich noch irgendwas tun, damit der perl-interpreter die dann auch findet? (Suchpfad setzen?)
 
A

Anonymous

Gast
1.) "Module können, ähnlich wie Dateien, hierarchisch angeordnet werden. Durch den ::-Separator wird angezeigt, dass ein Modul zu einer Modulgruppe gehört. Dadurch werden verwandte Module zu Gruppen zusammengefasst, außerdem kann der gleiche Modulname in verschiedenen Gruppen mehrfach verwendet werden. Modulgruppen werden als Verzeichnisse realisiert." [...] "Die Anweisung use File::Copy; bewirkt die Einbindung des Moduls File/Copy.pm."

2.) Hier sucht der Perl-Interpreter nach Modulen:

Code:
#!/usr/bin/perl -w

foreach (@INC)
{
print "$_\n";
}
 
OP
H

harvey

Member
the_evil_twin schrieb:
1.) "Module können, ähnlich wie Dateien, hierarchisch angeordnet werden. Durch den ::-Separator wird angezeigt, dass ein Modul zu einer Modulgruppe gehört. Dadurch werden verwandte Module zu Gruppen zusammengefasst, außerdem kann der gleiche Modulname in verschiedenen Gruppen mehrfach verwendet werden. Modulgruppen werden als Verzeichnisse realisiert." [...] "Die Anweisung use File::Copy; bewirkt die Einbindung des Moduls File/Copy.pm."

2.) Hier sucht der Perl-Interpreter nach Modulen:

Code:
#!/usr/bin/perl -w

foreach (@INC)
{
print "$_ \n";
}

Ds ergibt bei mir:
Code:
/usr/lib/perl5/5.8.8/i586-linux-thread-multi
/usr/lib/perl5/5.8.8
/usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8
/usr/lib/perl5/vendor_perl
.
Wo installiere ich nun aber meine pm's am besten hin? Nach site_perl/5.8.8/ oder nach vendor_perl/5.8.8/ (Ersteres Verzeichnis ist absolut leer, letzteres gut gefüllt)?

Noch ein Problem:
Ich möchte u.a. das Paket ochem (LaTeX-Satz für chemische Formeln) installieren. Das beinhaltet einige pm-Files, die sollen lt. Installationsanleitung in ein Verzeichnis gelegt werden, das vom perl-interpreter gefunden werden kann.

Dann soll noch ein Programm chemie.pl erstellt werden und das installer-script dafür benötigt die entsprechenden Pfadangaben in einem config-file. Was soll hier editiert werden???
Code:
BINDIR=/usr/local/ochem
M4BINDIR=/usr/bin
INCDIR=/usr/local/ochem
DVIPSDIR=/usr/local/tetex/dvips/ochem
STYLEDIR=/usr/local/tetex/tex/latex/ochem
MODULDIR=/usr/local/ochem
DOCDIR=/usr/local/ochem/doc
Ich nehme mal an, hier müsste dann statt /usr/local/ochem entweder /usr/lib/perl5/vendor_perl/5.8.8/ochem oder /usr/lib/perl5/site_perl/5.8.8/ochem hin. Richtig? Wenn ja, welches von beiden?
 
A

Anonymous

Gast
harvey schrieb:
Wo installiere ich nun aber meine pm's am besten hin? Nach site_perl/5.8.8/ oder nach vendor_perl/5.8.8/ (Ersteres Verzeichnis ist absolut leer, letzteres gut gefüllt)?

Wo du die Modulgruppen\Module hinplatzierst bleibt dir überlassen, dem Perl-Interpreter ist das egal, solange sie in einem @INC-Verzeichnis liegen. Für mich wäre /usr/lib/perl5/5.8.8/ nahe liegend.

Zu ochem:

Du kannst dem @INC auch Pfade hinzufügen:

Code:
#!/usr/bin/perl -w

use lib "/Pfad/zu/Modulgruppe"; 
use Modulgruppe::Modul;

Das chemie.pl-Programm tut genau dies.
 

ginka

Member
the_evil_twin schrieb:
2.) Hier sucht der Perl-Interpreter nach Modulen:

Code:
#!/usr/bin/perl -w

foreach (@INC)
{
print "$_ \n";
}

Den Inhalt von @INC kann man auch einfacher herausfinden, sprich ohne Skript: auf der Konsole
Code:
perl -V
(großes V) eingeben. In der Ausgabe steht am Ende etwas wie:

Code:
  @INC:
    /usr/lib/perl5/5.8.7/i586-linux-thread-multi
    /usr/lib/perl5/5.8.7
    /usr/lib/perl5/site_perl/5.8.7/i586-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.7
    /usr/lib/perl5/site_perl
    /usr/lib/perl5/vendor_perl/5.8.7/i586-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.7
    /usr/lib/perl5/vendor_perl
    .

Viele Grüße
ginka
 
OP
H

harvey

Member
Ich hab's jetzt nach vendor_perl gelegt und da funktioniert es auch :D

Aber worin besteht denn eigentlich der "philosophische" Unterschied zwischen vendor_perl und site_perl?
 
A

Anonymous

Gast
harvey schrieb:
Aber worin besteht denn eigentlich der "philosophische" Unterschied zwischen vendor_perl und site_perl?

site_perl: Ort, an dem die Bedienungsseite die Module ablegt.
vendor_perl: Ort, an dem der Betriebssystemhersteller die Module ablegt.

Beispiel: Die Universität kauft eine Serveranlage von der Firma Bla, dann gehen die Module der Universität nach site_perl und die Module der Firma Bla nach vendor_perl.

Also wäre site_perl der richtige Ort für dich, wenn du eigene Module ablegen willst.

Für neue Fragen öffne demnächst besser einen neuen Thread.
 
Oben