Thread Module inventarisieren ohne ExtUtils::Installed (26 answers)
Opened by bianca at 2013-04-24 11:25

bianca
 2013-04-24 11:25
#167226 #167226
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
Hi!
In meinem lokalen Strawberry Modulverzeichnis gibt es den Pfad C:\strawberry\perl\vendor\lib\Algorithm. Darin befindet sich u.a. die Datei DiffOld.pm.
Nun benutze ich diesen Code zur Inventarisierung der Module: msg #167220
Der Code findet das Modul Algorithm::DiffOld auch brav.
Nun kommt mein Problem. Im Anschluss an die Modulinventarisierung iteriere ich in dem Array und frage mit ExtUtils::Installed->version() die Version jeden Moduls ab.
Bei diesem Modul bekomme ich diese Meldung:
Quote
Algorithm::DiffOld is not installed at /meinpfad/meinscript.pl line xy

Nun habe ich zwei Fragen:
1. Wieso meint ExtUtils::Installed, das Modul Algorithm::DiffOld wäre nicht installiert?
2. Wenn ich die Gegenprobe mache und mir mit ExtUtils::Installed->modules() die Liste der installierten Module ausgeben lasse taucht Algorithm::DiffOld nicht auf. Wieso nicht?

Es kommt mir jetzt nicht auf das eine Modul an aber das Problem ist, ExtUtils::Installed stirbt in diesem Fall. Ich habe die Umleitung von STDERR, STDOUT usw. probiert, es stirbt einfach.

Probleme ist, dass es haufenweise Differenzen zu geben scheint, nachdem ich DiffOld.pm mal testweise in DiffOld.pm.alt umbenannt habe kam direkt das nächste Beispiel: AnyDBM_File.

Wie kann ich erreichen, dass ExtUtils::Installed und damit mein Script nicht sterben, wenn mal ein Modul "not installed" ist? Bzw. wie kann ich ExtUtils::Installed dazu bringen, das nicht zu denken. Denn die Module sind ja vorhanden?!

Für diejenige, die den anderen Thead nicht kennen: Ich inventarisiere mit File::Find und benutze nicht die Liste aus ExtUtils::Installed->modules(), weil ExtUtils::Installed anscheinend nach den .packlist Dateien geht. Und auf meinem Server gibt es diese nicht bis auf eine.
Zumindest wird auf dem Server mit ExtUtils::Installed->modules() nur ein einziges Modul gefunden: DateTime::Format::Mail. Das wars.
10 print "Hallo"
20 goto 10

View full thread Module inventarisieren ohne ExtUtils::Installed