CPAN: Eigenes Module

Beitrag lesen

Hallo Otto,

ich habe selten soviel dämlichen Ratschlag wie in diesem Thread gelesen.

Eins vorweg: mit deinem Ansatz bist du grundsätzlich auf dem richtigen Weg (also das Gestalten und Verpacken von Modulen als CPAN-konforme Distribution), lasse dich nicht von den Anfängern Struppi und hotti wirr machen. Behalte dieses Verzeichnisgerippe bei, und scheue dich auch nicht, deine Distro auf dem normalen Wege (also make install) zu installieren, wenn du mit den Modulen fertig und zufrieden bist. Solange du noch mit der Entwicklung beschäftigt bist, bewege dich ins Basisverzeichnis (wo sich Makefile.PL befindet), und es hilft ein prove -b nach dem make-Schritt (analog prove -l vor dem make-Schritt), bzw. perl -Mblib ... nach dem make-Schritt (analog perl -Ilib ... vor dem make-Schritt), um die von dir angegebene Fehlermeldung zu vermeiden.

Als Ersatz für h2xs ist dringend Module::Starter::PBP zu empfehlen, insbesonders weil die Tests dann gleich an der richtigen Stelle landen. Lösche test.pl, behalte das t/-Verzeichnis. Mit Module::Starter::PBP kannst du auch gleich eine Hierarchie von Modulen anlegen, nicht nur ein einzelnes wie bei h2xs.

Ich finde deinen Baum in https://forum.selfhtml.org/?t=195566&m=1309141 zu abstrakt, um konkreten Rat dazu geben zu können. Ich ersetze es daher mal aufs Geratewohl mit angenommenen Namen.

Hierarchie von Klassen/Packages:

Foo::Bar
         _______|______
         |            |
Foo::Bar::Config  Foo::Bar::Parser
                      |
                  Foo::Bar::SpecialisedParser

Resultiert in Hierarchie von Verzeichnissen/Dateien:

Foo-Bar-0.01/lib/Foo/Bar.pm
Foo-Bar-0.01/lib/Foo/Bar/Config.pm
Foo-Bar-0.01/lib/Foo/Bar/Parser.pm
Foo-Bar-0.01/lib/Foo/Bar/SpecialisedParser.pm
Foo-Bar-0.01/t/*.t
Foo-Bar-0.01/Makefile.PL (oder Build.PL)
Foo-Bar-0.01/README
Foo-Bar-0.01/Changes
Foo-Bar-0.01/MANIFEST (erzeugt durch Toolchain)
Foo-Bar-0.01/META.yml (erzeugt durch Toolchain)

Hinweise dazu: Foo-Bar-0.01 ist der Distroname. In 95% der Fälle kommt er vom Hauptmodul der Distro + Versionsnummer, ein bekanntes Gegenbeispiel ist die Distro namens libwww-perl. Also, daher nicht davon verwirren lassen, dass der Name des Packages Foo::Bar augenscheinlich mehrmals umgesetzt wird!

Um deine Distro auf einen anderen Rechner umzuziehen, make dist und du bekommst ein Archiv, welches sich über die reguläre Toolchain installieren lässt, natürlich auch mit dem manuellen Standardverfahren auspacken; perl Makefile.PL; make; make test; make install.