Abgesehen davon, es zu versuchen
perldoc <module name>
Individuell für jedes CPAN-Modul, das mir gefällt oder das Dateisystem durchläuft und sich die Verzeichnisse ansieht, habe ich keine Ahnung, welche Module wir installiert haben.
Was ist der einfachste Weg, um eine große Liste aller installierten CPAN-Module zu erhalten? Über die Befehlszeile oder auf andere Weise.
cpan -l
mich unter Windows nützlich.instmodsh
Antworten:
Dies wird in den Perl-FAQ beantwortet, die Antwort, die schnell mit gefunden werden kann
perldoc -q installed
. Kurz gesagt, es kommt darauf an , Varianten von beiden zu verwendenExtUtils::Installed
oder zu verwendenFile::Find
, die zuvor in diesem Thread behandelt wurden.Dort finden Sie auch den FAQ-Eintrag "Wie finde ich, welche Module auf meinem System installiert sind?" in perlfaq3. Sie können eine Liste aller FAQ-Antworten sehen, indem Sie in perlfaq suchen
quelle
ExtUtils::Installed
Konstruktoroptionskip_cwd
über diese Befehlszeile zu übergeben?cpan -l
aber das funktioniert nicht auf RHEL6 und/usr/bin/cpan -l
wirft den FehlerUnknown option: l
.Bearbeiten: Weitere Informationen dazu finden Sie in den CPAN-FAQ
quelle
perldoc -q installed
behauptet,
cpan -l
das würde den Trick machen, aber es funktioniert nicht für mich. Die andere Option:cpan -a
spuckt eine schöne Liste der installierten Pakete aus und hat den netten Nebeneffekt, sie in eine Datei zu schreiben.
quelle
cpan -l
(oder funktioniert für mich mit CPAN v2.05).cpan -a
ist in der Tat schöner.Es ist erwähnenswert, dass perldoc perllocal nur über Module berichtet, die über CPAN installiert wurden. Wenn jemand Module manuell installiert, werden sie nicht gefunden. Wenn mehrere Personen Module installieren und die Datei perllocal.pod unter Quellcodeverwaltung steht, können Konflikte möglicherweise falsch gelöst und die Liste beschädigt werden (dies ist beispielsweise hier bei der Arbeit geschehen).
Leider scheint die Lösung mit File :: Find oder ähnlichem durch @INC zu gehen. Dadurch werden jedoch nicht nur die Module gefunden, sondern auch verwandte Module in einer Distribution. Beispielsweise werden zusätzlich zum tatsächlichen Distributionsnamen von Test :: Harness (vorausgesetzt, Sie haben Version 3 oder höher) TAP :: Harness und TAP :: Parser gemeldet. Sie könnten sie möglicherweise mit Verteilungsnamen abgleichen und diejenigen Namen verwerfen, die nicht übereinstimmen, aber dann könnten Sie lokal erstellte und installierte Module verwerfen.
Ich glaube, brian d foys Backpan-Indizierungsarbeit soll Code enthalten, der an die PM-Datei übergeben wird, und es wird versucht, auf die Verteilung zu schließen, aber selbst dies schlägt manchmal fehl, da das, was in einem Paket enthalten ist, nicht unbedingt installiert ist (siehe Devel :: Cover) :: Inc für ein Beispiel).
quelle
quelle
No documentation found for "perllocal".
Sie können ExtUtils-Installed ausprobieren , aber das sieht nur in
.packlist
s aus, sodass möglicherweise Module fehlen, in die Benutzer Dinge verschoben haben@INC
von Hand .Ich habe App-Module-Lister geschrieben für einen Freund geschrieben, der dies als CGI-Skript auf einem Nicht-Shell-Webhosting-Konto tun wollte. Sie nehmen einfach die Moduldatei und laden sie als Dateinamen hoch, den Ihr Server als CGI-Skript behandelt. Es gibt keine Abhängigkeiten außerhalb der Standardbibliothek. Verwenden Sie es wie es ist oder stehlen Sie den Code.
Es gibt eine Liste der Module und ihrer Versionen aus:
Ich wollte dies als Feature zum
cpan
Tool hinzufügen , also mache ich das auch. [Die Zeit vergeht] Und jetzt habe ich einen-l
Schaltercpan
. Ich habe noch ein paar andere Dinge damit zu tun, bevor ich eine Veröffentlichung mache, aber es ist in Github . Wenn Sie nicht darauf warten möchten, können Sie einfach versuchen, mit dem-a
Schalter ein Autobundle zu erstellen, obwohl dadurch einige Pods in die Liste aufgenommen werden.Viel Glück;
quelle
Hier ein Skript, das den Trick machen würde:
quelle
Perl - 5.10.1
Module werden nicht aufgelistet.Ich verwende dafür gerne den CPAN-Befehl 'r'. Sie können mit dem alten Stil in die CPAN-Shell einsteigen:
Auf den meisten neueren Systemen gibt es den Befehl 'cpan', sodass Sie mit diesem Befehl zur Shell gelangen:
(Normalerweise müssen Sie 'sudo' verwenden, um es als root auszuführen, oder 'su -', um root zu werden, bevor Sie es ausführen, es sei denn, Sie haben cpan so eingerichtet, dass Sie es als normalen Benutzer ausführen können, aber als root installieren. Wenn Sie auf diesem Computer kein Root-Verzeichnis haben, können Sie die CPAN-Shell weiterhin verwenden, um diese Informationen zu erhalten. Sie können jedoch keine Module installieren, und Sie müssen möglicherweise beim ersten Mal einige Einstellungen vornehmen starte es.)
Sobald Sie sich in der cpan-Shell befinden, können Sie mit dem Befehl 'r' alle installierten Module und ihre Versionen melden. Geben Sie an der Eingabeaufforderung "cpan>" "r" ein. Dadurch werden alle installierten Module und ihre Versionen aufgelistet. Verwenden '?' um mehr Hilfe zu bekommen.
quelle
sudo
hier? Es ist völlig unnötig.Hier ist eine wirklich hackige Möglichkeit, dies in * nix zu tun. Sie erhalten einige Dinge, die Sie nicht wirklich interessieren (z. B. warnings :: register usw.), aber es sollte Ihnen eine Liste aller .pm-Dateien geben, auf die über zugegriffen werden kann perl.
quelle
quelle
*.pm
Modul deutlich zeigt . Sie können viele Duplikate sehen ...Sie können eine Liste der
instmodsh
in Ihrem System installierten Perl-Module mithilfe des Befehls in Ihrem Terminal abrufen. Sie werden nach drei Optionen gefragt, um die Ausgabe zu verbessern:quelle
Unter Linux / Unix verwende ich diesen einfachen Befehl:
Es scannt alle Ordner ein
@INC
und sucht nach einer * .pm-Datei.quelle
Versuchen Sie den folgenden Befehl
instmodsh
quelle
Die Antwort finden Sie in der Perl-FAQ-Liste .
Sie sollten die ausgezeichnete Dokumentation überfliegen, die mit Perl geliefert wird
quelle
Versuchen Sie es
man perllocal
oderperldoc perllocal
.quelle
Ich habe erst gestern ein Perl-Skript geschrieben, um genau das zu tun. Das Skript gibt die Liste der in @INC installierten Perl-Module zurück, wobei '::' als Trennzeichen verwendet wird. Rufen Sie das Skript mit - auf
ODER
Ab sofort überspringt das Skript das aktuelle Verzeichnis ('.'), Da ich Probleme mit rekursiven Softlinks hatte. Sie können es jedoch einschließen, indem Sie die grep-Funktion in Zeile 17 von ändern
zu nur,
Das Skript finden Sie hier.
quelle
Hier ist ein weiteres Befehlszeilentool zum Auflisten aller installierten PM-Dateien:
Suchen Sie nach installierten Perl-Modulen, die einem regulären Ausdruck entsprechen
quelle
Um durch die @ INC-Verzeichnisbäume zu gehen, ohne ein externes Programm wie ls (1) zu verwenden, könnte man das verwenden
File::Find::Rule
Modul verwenden, das eine schöne deklarative Schnittstelle hat.Außerdem möchten Sie Duplikate herausfiltern, falls frühere Perl-Versionen dieselben Module enthalten. Der Code dafür sieht folgendermaßen aus:
Am Ende des Laufs haben Sie auch alle Ihre Modulnamen als Schlüssel im% Seen-Hash. Der Code könnte angepasst werden, um den kanonischen Dateinamen (angegeben in $ file) als Wert des Schlüssels zu speichern, anstatt wie oft gesehen zu werden.
quelle
Folgendes hat bei mir funktioniert.
quelle
Alle diejenigen, die Perldoc oder andere Module nicht installieren können und wissen möchten, welche Module verfügbar sind (CPAN oder andere), funktionieren unter Linux und Mingw32 / 64 wie folgt:
Ja, es ist chaotisch. Ja, es wird wahrscheinlich mehr gemeldet, als Sie möchten. Wenn Sie es jedoch in eine Datei leiten, können Sie beispielsweise leicht überprüfen, welche DBM-Schnittstellen vorhanden sind:
Deshalb bin ich auf dieser Seite gelandet (enttäuscht)
(Mir ist klar, dass dies die Frage des OP nicht genau beantwortet, aber ich poste es für jeden, der aus dem gleichen Grund wie ich hier gelandet ist. Das ist das Problem mit Stack *** Es ist fast unmöglich, die Frage zu finden, die Sie sind Fragen, auch wenn es existiert, doch Stack *** ist fast immer Googles Top-Hit!)
quelle
Das Perl-Kochbuch enthält mehrere Iterationen eines Skripts "pmdesc", das genau das tut, was Sie wollen. Google-Suche nach "Perl Cookbook pmdesc" und Sie finden Artikel auf anderen Q & A-Sites , mehrere Codelisten im Internet , eine Diskussion der Lösung und sogar einige Verbesserungen .
quelle
Hier ist ein Perl-Einzeiler, der eine Liste der installierten Module druckt:
Stellen Sie einfach sicher, dass Data :: Dumper installiert ist.
quelle
Windows-Benutzer führen einfach eine Windows Explorer-Suche durch, um sie zu finden.
quelle
Versuchen Sie "perldoc -l":
$ perldoc -l Log :: Dispatch /usr/local/share/perl/5.26.1/Log/Dispatch.pm
quelle
Wenn Sie Ihr Perl-Skript eingeben, haben Sie alle installierten Module als PM-Dateien unter den Ordnern in @INC, sodass ein kleines Bash-Skript die Aufgabe für Sie erledigt:
quelle
find `perl -le'print for@INC'` -name '*.pm'
Für Linux ist der einfachste Weg,
quelle
Das funktioniert bei mir
quelle
Folgendes mache ich:
perl -M{cpan_module}
Wenn Sie keine Fehler erhalten, besteht eine gute Chance, dass das Modul installiert ist.
quelle