Wie starte ich eine neue Perl-Modul-Distribution?

8

Ich versuche ein großartiges Projekt in Perl zu erstellen. Das IBM MakeMaker Tutorial war bisher sehr hilfreich, aber ich verstehe nicht wie um alle Module in das Hauptprogramm einzubinden. In meinem Projekt root habe ich MANIFEST , Makefile.PL , README , ein bin Verzeichnis und ein lib Verzeichnis. In meinem bin Verzeichnis habe ich mein Hauptscript ( Main.pl ). Im Verzeichnis lib habe ich jedes meiner Module in seine eigenen Verzeichnisse unterteilt (d. H.% Co_de% und Utils::Util1 im Verzeichnis Utils::Utils2 usw.). In jedem Modulverzeichnis gibt es auch ein utils -Verzeichnis mit Tests

Meine t -Datei hat folgendes:

%Vor%

MANIFEST ist das Folgende:

%Vor%

Nachdem ich das Programm erstellt und ausgeführt habe, stürzt das Programm ab und beschwert sich, dass es Makefile.PL nicht finden kann, und wenn ich Utils::Util1 starte, heißt es make test . Kann jemand irgendwelche Vorschläge machen? Ich habe noch nie ein großangelegtes Projekt in Perl gemacht, und ich muss noch viele weitere Module hinzufügen

    
Tim 30.09.2009, 01:09
quelle

4 Antworten

5

Probieren Sie diese Struktur aus:

%Vor%

Wie schon gesagt, installiert make Ihre Module nicht, sondern baut sie nur in einem blib -Verzeichnis auf. (In Ihrem Fall kopiert es sie nur dort, aber wenn Sie XS-Code hätten, würde es mit einem C-Compiler kompiliert werden.) Verwenden Sie make install , um Ihre Module für reguläre Skripts zu installieren.

Wenn Sie Ihr Skript zwischen make und make install ausführen möchten, können Sie Folgendes tun:

%Vor%

Die -Mblib weist Perl an, die entsprechenden Verzeichnisse temporär zum Suchpfad hinzuzufügen, damit Sie ein deinstalliertes Modul ausprobieren können. ( make test macht das automatisch.)

    
cjm 30.09.2009, 04:04
quelle
13

Wenn Sie gerade mit dem Erstellen von Perl-Modulen beginnen (das entspricht auch Perls Projekt), sollten Sie Makemaker nicht verwenden. Module :: Build ist der richtige Weg und gehört nun zur Standardbibliothek. Makemaker ist für uns alte Salze, die noch nicht zu Module :: Build konvertiert sind. :) Ich werde das jetzt treffen, dass Module :: Build nicht mehr gepflegt wird und in Ungnade fällt; Ich benutze immer noch MakeMaker.

Sie sollten niemals ein Perl-Projekt starten, indem Sie versuchen, die Struktur selbst zu erstellen. Es ist zu viel Arbeit und du wirst immer etwas vergessen.

Es gibt h2xs , ein Programm, das mit perl geliefert wird und ein Werkzeug sein sollte, um .h Dateien in Perls Leimsprache XS zu konvertieren. Es funktioniert gut, aber sein Vorteil ist, dass es mit perl kommt:

%Vor%

Etwas wie Module :: Starter ist etwas komplizierter, obwohl Sie es von CPAN bekommen müssen . Es ist das Werkzeug, das wir in Intermediate Perl verwenden, weil es einfach ist. Es füllt einige Vorlagen mit Ihren Informationen aus:

%Vor%

Wenn Sie dies tun, können Sie dies in Distribution :: Cooker So können Sie Ihre Dateien und Inhalte anpassen. Es ist ein dinky Dienstprogramm, das ich für mich selbst schrieb, damit ich meine eigenen Vorlagen verwenden konnte.

%Vor%

Wenn Sie wirklich Hardcore sind, möchten Sie vielleicht Dist :: Zilla , aber das ist mehr Leute, die bereits wissen, was sie tun.

    
brian d foy 30.09.2009 17:06
quelle
9

Darf ich auch module-starter vorschlagen? Es wird automatisch ein Skelettprojekt erstellt, das "funktioniert". Ich habe gelernt, was ich über die Organisation von Perlmodulen weiß, indem ich die generierten Skelettdateien lese. Es ist alles gut dokumentiert und recht einfach als Basis für das Wachstum eines größeren Projekts zu verwenden. Sie können die ersten Schritte , um zu sehen, was sie Ihnen bietet.

Wenn Sie module-starter ausführen, erhalten Sie eine Perl-Distribution, die aus mehreren Modulen besteht (verwenden Sie die Befehlszeilenoption --module , z. B.

) %Vor%

zum Erstellen mehrerer Module in einer einzigen Distribution). Es liegt dann an Ihnen, ob Sie Ihr Projekt lieber als eine einzelne Distribution aus einer Anzahl von zusammenarbeitenden Modulen oder als eine Anzahl von Distributionen organisieren möchten, die separat veröffentlicht werden können, aber voneinander abhängen (wie in Ihrem co_de% oder Build file), um ein vollständiges System bereitzustellen.

    
Gaurav 30.09.2009 04:20
quelle
2

Standardmäßig wird nach Tests in einem Top-Level-Verzeichnis (oder einer test.pl-Datei gesucht, das aber einige Einschränkungen hat, sollte also vermieden werden).

Sie sagen "Nachdem ich make and run" ... make stellt die Dinge in eine blib-Verzeichnisstruktur, die bereit ist, installiert zu werden, macht aber nichts Besonderes, um das Ausführen eines Skripts zu ermöglichen. (make test ist etwas Besonderes; es fügt entsprechende Pfade von blib zu @INCs von Perl hinzu, um die Tests ausführen zu können.) Sie müssen eine "make install" durchführen, um die Module zu installieren, in denen Ihr Skript sie finden wird Werkzeug wie PAR, um sie zusammen mit Ihrem Skript zu packen).

    
ysth 30.09.2009 03:38
quelle

Tags und Links