Funktioniert nicht mit anderen Modulen, aber um ein Beispiel zu geben. Ich habe Text :: CSV_XS mit einer CPAN-Einstellung installiert:
%Vor%Wenn ich versuche, ein test.pl-Skript auszuführen:
%Vor%$ perl test.pl
Ich bekomme
%Vor%Ich habe den Fehler zurück zu DynaLoader.pm verfolgt. Es passiert an dieser Zeile:
%Vor%CSV_XS.so existiert im obigen Verzeichnis
Ich persönlich würde vorschlagen, local :: lib zu verwenden. :)
Haben Sie sich bei der Installation des Moduls die Ausgabe angesehen? Wo heißt es, dass es das Modul installiert hat? Schau in lib . Sehen Sie das nächste Verzeichnis, das Sie erwarten?
Schauen Sie in ~ / lib nach, um zu sehen, wo alles gelandet ist, um zu überprüfen, ob Sie in Ihrer use lib
-Anweisung den richtigen Verzeichnisnamen haben:
% find ~/lib -name CSV_XS.so
Sobald Sie sehen, wo es installiert ist, verwenden Sie diesen Verzeichnisnamen in Ihrem use lib
(oder PERL5LIB oder was auch immer).
Ich erwarte, dass du irgendwie lib/lib
drin hast. Das PREFIX
ist nur das Präfix, well, und das Installationsprogramm hängt andere Verzeichnisabschnitte an diesen Basispfad an. Dazu gehören lib, man, bin, usw. .
Versuchen Sie es stattdessen:
%Vor%PREFIX legt die Basis für alle Verzeichnisse fest, in die Sie installieren werden (bin, lib usw.)
Sie können auch mit Ihrem '~' in Shell-Erweiterungsprobleme geraten. Sie können versuchen, es selbst zu erweitern:
%Vor%Es wäre auch hilfreich, wenn Sie die Befehle angeben würden, die Sie verwendet haben, um den Fehler zu erhalten, nach dem Sie fragen.
Aus der Fehlermeldung ("at / www / common ...") geht hervor, dass Ihr Skript ein CGI- oder mod_perl-Skript ist. Der Webserver wird wahrscheinlich nicht als Benutzer 'foo' ausgeführt, unter dessen Home-Verzeichnis Sie das Modul installiert haben - das könnte dazu führen, dass der Webserver dieses Verzeichnis nicht lesen kann.
Es kann auch in einem Chroot-Gefängnis laufen, was bedeuten würde, dass das Verzeichnis, in dem Sie sich befinden installiert das Modul möglicherweise nicht für das Skript sichtbar.
Mit anderen Worten, nur weil Sie das Modul sehen können, heißt das nicht, dass der Webserver und damit auch Ihr Skript das tun kann. Sie sollten die relevanten Dateiberechtigungen prüfen, und wenn der Server chroot ist, ob Ihr Modulverzeichnis im virtuellen Dateisystem eingebunden ist.
Ich empfehle dringend, Ihre eigene Perl in Ihrem eigenen Home-Verzeichnis zu installieren, wenn Sie Platz haben. Dann kannst du alles unter deiner Kontrolle behalten und deinen eigenen Modulsatz behalten, sowie entkommen, wenn die Admins dich auf einer älteren Version von Perl halten. (Ganz zu schweigen davon, sich selbst zu erhalten, wenn sie eines Tages upgraden und alle Module auslassen, auf die Sie angewiesen sind.)