12 Stimmen

Welche Module werden mit Perl verteilt?

Woher weiß ich, welche Module mit Perl verteilt werden?

Meine erste Vermutung ist, dass die aufgeführten Kernmodule aquí sind immer inbegriffen, auch wenn ich dies nicht ausdrücklich erwähnt finde. Ich habe jedoch Module außerhalb dieses Satzes (z. B. LWP) verwendet, ohne sie unter Mac OS X und Linux installieren zu müssen.

Um meine Frage ein wenig zu präzisieren:

  • Welche Module werden bei allen Perl-Installationen mitgeliefert?

Und: Wie kann ich herausfinden, welche Module mit verteilt wurden:

  • Linux (insbesondere Debian/Ubuntu)?

  • Mac OS X?

  • Solaris?

In jedem Fall verwende ich die Version von Perl, die standardmäßig mit der neuesten Version des Betriebssystems geliefert wird.

TIA.

Aktualisierung: Der Grund für die Frage ist, dass ich auf Mac OS X und Linux für den Einsatz auf verschiedenen Linux und Solaris entwickeln, und ich habe nicht Root auf einigen dieser Systeme, und im Fall von Mac OS X habe ich nicht einmal einen Compiler AFAIK. Ich möchte also wissen, welche Module ich in allen vier Bereitstellungen ohne weitere Installationen zur Verfügung habe.

0voto

Pierre-Luc Simard Punkte 2713

Eine einfache Referenz hierfür ist in der Anhang D aus dem Buch Perl-Einführung . Zugegeben, das gilt für Perl 5.6, aber meines Wissens hat Perl 5.8 nichts davon entfernt und nur neue eingeführt (wie Digest::MD5, File::Temp, Filter::Simple, libnet, List::Util, Memoize, MIME::Base64, Scalar::Util, Storable, Switch, Test::More, Test::Simple, Text::Balanced, Tie::File, etc.)

Für jede Version von Perl können Sie in perldoc . hier ist die Liste für Perl 5.8.8

-1voto

Anon Gordon Punkte 2451

Diese Frage ist jetzt nicht mehr so wichtig (ich habe Root-Zugriff auf dem möglichen Zielrechner, also werde ich nur die Pakete installieren, die ich brauche), aber falls es jemanden interessiert, hier ist, was ich gemacht habe:

Führen Sie diesen Code zunächst auf jedem der Zielsysteme aus:

foreach my $dir (@INC) {
    print "Directory: $dir\n";
    if (-d "$dir") {
        my @modules = `find $dir/ -name "*.pm"`;
        foreach my $m (@modules) {
            my $label = $m;
            $label =~ s|\n$||;
            $label =~ s|//+|/|g;
            $label =~ s|^$dir/||;
            print "$label\n";
        }
    }
}

Beachten Sie, dass Sie ein *nix-System mit einem Find-Befehl benötigen. Geben Sie die Ausgabe in drei Dateien aus, sortiert. Verwenden Sie dann Befehle wie diesen (aus dem Gedächtnis):

grep -F -x -f list-1.txt list2.txt > list-12.txt
grep -F -x -f list-12.txt list3.txt > list-123.txt

Jetzt sollte list-123.txt die Liste der gemeinsam genutzten Module enthalten, mehr oder weniger.

Alle drei Systeme verfügten über einige zusätzliche Module, insbesondere die XML::Parser-Module.

-6voto

ForYourOwnGood Punkte 35214

Schauen Sie in Ihrer Hauptsymboltabelle nach, dort finden Sie alle verfügbaren "Standard"-Pakete...

print %main::;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X