2010-07-12 4 views
5

Je suis très nouveau à la programmation Perl. Je viens juste de finir de lire le livre de Llama. Jusqu'à présent, j'ai écrit un script dans Bash, mais je veux essayer Perl et ses avantages par rapport aux scripts Bash.Perl Programmation et distribution

Je crée un script qui utilise un certain nombre de modules standards (par exemple Getopt) et certains modules pas si standard (par exemple PerlMagick)

À un moment donné, je veux distribuer mon code Perl et je veux il est utilisable par des personnes qui ne connaissent pas vraiment Perl ou la programmation. Évidemment, les modules standards devraient toujours être là (j'utilise "utiliser 5.010" pour le garantir dans une certaine mesure), mais qu'en est-il des non standard?

Je suppose qu'il ya deux possibilités: 1) Dois-je dire à l'utilisateur final d'installer les modules manquants? 2) Devrais-je créer un script d'installation qui teste les modules et s'ils ne sont pas là, alors installez-les? Si le choix 2 est choisi, devrais-je télécharger les modules et les installer? Ou les distribuer avec mon code principal? Je ne suis pas sûr de ce que l'étiquette est avec ces choses ...

Merci beaucoup pour tous les conseils, Ben

Répondre

5

Si vous concevez votre application comme une distribution Perl (utilisé sur CPAN), puis vous obtenez le pouvoir de la chaîne d'outils Perl pour faire face à ce genre de chose pour vous. Vous assurez-vous que les modules dont vous dépendez sont énumérés correctement dans votre Makefile.PL, puis quelqu'un n'a qu'à écrire cpan YourApp::Name pour obtenir votre application et tout ce qu'il a besoin. Ou si pour eux (ce qui est la raison pour laquelle Module::AutoInstall est pas tout à fait mort et ne mérite pas d'être OMI) ont téléchargé votre application d'ailleurs que CPAN et ils construisent manuellement, le processus make peut trouver les dépendances.

Pour les utilisateurs de Windows, la seule chose que vous devez ajouter avant l'étape cpan YourApp::Name est « installer Perl Strawberry ».Vous avez également la possibilité de grouper (qu'il s'agisse de PAR ou simplement d'un programme d'installation ou d'une archive qui inclut votre application et tous les modules nécessaires, et probablement perl), mais il y a un inconvénient majeur à cette technique: vous ne pouvez pas non plus utiliser un code XS, ou vous devez fournir un package distinct pour chaque plate-forme différente que vous souhaitez que votre application prenne en charge. La route CPAN ne rencontre pas ce problème.

1

Et si vous ne voulez pas les compiler avec prelcc ou PerlApp - alors tout fonctionne posibility.

  • Vous Sould vérifier le module présente version correcte, votre code Perl ne pas revendiquer un certain message d'erreur comme: « Impossible de localiser les données/UUID.pm dans @INC (@INC contient : ...) ". Par exemple:

    eval { use Data::UUID; }; 
    if([email protected]) { 
         print "Data::UUID not found\n"; 
    } 
    

    ou

    eval { use Text::ParseWords 3.23; }; 
    if([email protected]) { 
         print "Text::ParseWords 3.23 not found\n"; 
    } 
    
  • Vous pouvez essayer d'utiliser le module CPAN (ou programme CPAN sur unix). Comme, vous pouvez essayer commande shell:

    cpan Data::UUID 
    

    ou du script Perl:

    #!/usr/bin/perl 
    use CPAN; 
    CPAN::install("Data::UUID"); 
    
+0

Downvote: Cela ne fonctionne pas car 'use' s'exécute au moment de la compilation. De plus, nous avons déjà un suivi des dépendances parfait + chaîne d'outils d'installation comme décrit la réponse de hobbs, pas besoin de ce hackery. – daxim

Questions connexes