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:
MANIFEST
ist das Folgende:
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
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:
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.)
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:
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.
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.
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.
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).