8
votes

Comment démarrer une nouvelle distribution de module Perl?

J'essaie de mettre en place un grand projet ISH, écrit à Perl. Le Tutoriel IBM Makemaker a été très utile jusqu'à présent, mais je Ne comprenez pas comment relier tous les modules dans le programme principal. Dans ma racine de projet, j'ai manifeste , makefile.pl , lisezme , un répertoire bin et a < code> lib répertoire. Dans mon répertoire bin , j'ai mon script principal ( main.pl ). Dans le répertoire lib , j'ai chacun de mes modules, divisés dans leurs propres répertoires respectifs (c'est-à-dire utils :: util1 et utils :: utils2 Dans le répertoire utils , etc.). Dans chaque répertoire de module, il existe également un répertoire t , contenant des tests

My MANIFEST Le fichier suivant: xxx

makfile.pl est le suivant: xxx

après que je faisais et exécuté, le programme se bloque, se plaignant de ne pas trouver Utils :: util1 , et quand j'exécute ' faire tester , il est indiqué Aucun test défini . Quelqu'un peut-il faire des suggestions? Je n'ai jamais fait de projet à grande échelle comme celui-ci à Perl, et je devrai ajouter de nombreux autres modules


2 commentaires

J'espère que tu es "utils: util1" et "utils :: util2" ne sont que des exemples de noms.


Ce ne sont que des exemples de noms. Je n'ai pas encore écrit tous les modules que je vais avoir besoin, mais je voulais pouvoir construire quelque chose.


4 Réponses :


2
votes

Par défaut, les tests sont recherchés dans un répertoire T de niveau supérieur (ou un fichier test.pl, mais qui a des limitations, de sorte que cela devrait être évité).

Vous dites "après que je faisais et courir" ... Mettez des choses dans une structure de répertoire Blib prêt à être installée, mais ne fais rien de spécial pour faire exécuter un script d'accéder. (Effectuez le test est spécial; il a ajouté des chemins appropriés de Blib to perl @inc pour pouvoir exécuter les tests.) Vous devrez faire une «installation» pour installer les modules où votre script les trouvera (ou utiliser un Outil comme par pour les emballer avec votre script).


0 commentaires

6
votes

Essayez cette structure:

perl -Mblib bin/Main.pl


0 commentaires

9
votes

Pourrais-je aussi suggérer Module-Starter ? Cela créera automatiquement un projet de squelette qui "fonctionne simplement". J'ai appris ce que je connais peu sur l'organisation de modules Perl en lisant les fichiers de squelette générés. Tout est bien documenté et assez facile à utiliser comme base pour la croissance d'un projet plus important. Vous pouvez consulter Les DOCS de démarrage pour voir ce qu'il vous donne.

exécuté Module-Starter vous donnera une distribution Perl, consistant d'un certain nombre de modules (utilisez l'option de ligne de commande - Module , tel que: xxx

pour créer plusieurs modules dans une seule distribution). Il vous appartient alors si vous préférez organiser votre projet comme une seule distribution composée d'un certain nombre de modules fonctionnant ensemble, ou en tant que nombre de distributions pouvant être libérées séparément, mais qui dépendent de l'autre (comme configuré dans votre < Code> Build ou MAKEFILE.PL Fichier) Pour fournir un système complet.


3 commentaires

Merci. J'ai lu cela et je n'ai rien trouvé sur faire des projets, seulement sur la fabrication de modules


TIM: J'ai modifié ma réponse pour clarifier la manière dont les distributions et les modules peuvent travailler ensemble à Perl. J'espère que ça aide? Veuillez modifier votre question ou répondre à nouveau si l'un de nous est toujours confondu :).


Cela semble être une très bonne idée et je devrai l'utiliser pour mon prochain projet. J'ai déjà mis en place un projet Makemaker, mais cela répond à ma question beaucoup mieux que votre poste initial



13
votes

Si vous commencez tout juste à créer des modules PERL (qui est également l'équivalent de Perl d'un projet), n'utilisez pas Makemaker. Module :: Build est la voie à suivre et fait maintenant partie de la bibliothèque standard. Makemaker est pour nous de vieux sels qui n'ont pas été convertis en module :: Construire encore. :) Je vais frapper que maintenant que Module :: Build est hométacé et hors de faveur; J'utilise toujours Makemaker.

Vous ne devez jamais commencer un projet Perl en essayant de créer vous-même la structure vous-même. C'est trop de travail et vous oublierez toujours quelque chose.

Il y a h2xs , un programme fourni avec perl et était censé être un outil pour convertir les fichiers .h Langue de colle de Perl XS. Cela fonctionne bien, mais son avantage est qu'il est livré avec perl : xxx

quelque chose comme Module :: Le démarreur est un peu plus sophistiqué, même si vous devez l'obtenir de CPAN. C'est l'outil que nous utilisons dans perl intermédiaire car c'est simple. Il remplit certains modèles avec vos informations: xxx

Si vous le faites pour le faire un peu, vous pourriez ensuite convertir en Distribution :: Cooker Pour que vous puissiez personnaliser vos fichiers et votre contenu. C'est un utilitaire dinky que j'ai écrit pour moi-même afin que je puisse utiliser mes propres modèles. xxx

Si vous êtes vraiment dur, vous voudrez peut-être dist :: Zilla , mais c'est plus pour les personnes qui savent déjà ce qu'ils font.


0 commentaires