IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

PERL et modules


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Par défaut PERL et modules
    Bonjour a tous,

    J'aurais besoin de conseil "structurel" concernant ma programmation PERL.
    Dans un repertoire de travail, j'ai un programma principal "Main.pm" qui doit appeler un autre script perl nommé "check.pm". Ce dernier doit me retourner un $code (0 ou 1) dans le Main.pm afin que le main puisse continuer ou non le deroulement.

    Je ne sais pas quelle methode employer pour cela. (Sachant que check.pm peut etre utilisée par un autre script Perl. Il s'agit d'un module commun a plusieurs scripts).
    Dois-je utiliser le use check; dans mon main.pm ?
    et si oui ... comment recuperer mon $code ?

    Actuellement, j'ai trouvé une parade en faisant un exit 0; (si tout se passe bien) ou exit 1; (si probleme) dans mon check.pm. Code que je recupere dans mon main.pm comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $code=system(`check.pm $Argument`);
    En gros, voici la structure de mes scripts :
    main.pm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $Argument="/bin/usr/myfile.hdr";
    $code=system(`check.pm $Argument`);
    check.pm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (-e $Argument) {exit 0;} else {exit 1;}

    Mon check.pm est plus compliqué que ca mais le principe est là.
    Je pense que cette solution n'est pas tres "propre" en PERL ... ? Auriez vous une autre solution plus propre a me proposer ?

    Merci pour vos conseils !
    Lisa

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Par défaut modules
    Bonjour,

    tout d'abord une remarque : la "coutume" voudrait que ton Main.pm soit nommé Main.pl si c'est un programme Perl à part entière.

    Un "module" est en fait une collection (on dit aussi bibliothèque ou library en anglais) de fonctions que l'on charge dans son programme appelant par "use module". Lui doit être nommé xxx.pm.

    Le mieux serait que tu ailles voir le cours de Perl du club (http://lhullier.developpez.com/tutoriels/perl/intro/), chapitre XII

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Par défaut
    Merci foudunix pour ta reponse ... mais

    cela ne repond pas a ma question. J'ai bien compris qu'un module pouvait s'integrer comme les #include en C, mais mon soucis, est que je dois retourner une valeur de mon programme check.pm.

    Et l'utilisation de use me permet d'introduire des librairies qui sont un ensemble de fonctions qui ne retournent rien, si j'ai bien compris. (genre Math::trig ou XML::simple) ... ?


    Merci encore

  4. #4
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Voici deux mini-programmes, ils doivent se trouver dans le même répertoire. C'est de la programmation objet, je ne sais pas si cela pourra t'aider.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/usr/local/bin/perl
     
     
     
    #------------- Sequence.pl ----------------#
     
    use strict;
    use warnings;
    use Sequence;
     
     
     
    my $seq1 = Sequence->new ("Seq1", "ATGCCTGATGGCGTAATCCGTGAC");
     
     
     
    # Sequence en majuscules
    print $seq1->{SEQUENCE}."\n";
     
    # fonction permettant de l'écrire en minuscules
    print Sequence::Minuscules ($seq1->{SEQUENCE});
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #!/usr/local/bin/perl
     
     
     
    #------------- Sequence.pm ----------------#
     
    use strict;
    use warnings;
    package Sequence;                                       # nom du package
     
     
    sub new                                                 # fonction est définie
    {
            my ($Classe, $NomSeq, $Sequence) = @_;
            my $self = {};                                  # référence anonyme vers une table de hachage vide
            bless ($self, $Classe);                         # indique que la référence est liée au package (à la classe)
            $self->{NOM} = $NomSeq;
            $self->{SEQUENCE} = $Sequence;
            return $self;
    }
    1;                                                      # code de retour du module NE PAS OUBLIER
     
    sub Minuscules
    {
            my $Seq = $_[0];
            my $Seq_LC = lc($Seq);
            return ($Seq_LC);
    }
    Bon travail,


    Jasmine,

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Par défaut
    Genial !!

    Super !!!!
    Merci bp ... je vais essayer de me depatouiller avec ca, mais je crois que c'est exactement ce que je recherchais !

    Merci Jasmine



    Lisa

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. script PERL via module SNMP
    Par Xpertfly dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 23/12/2008, 14h01
  2. Deux versions de perl et modules
    Par flb-iori dans le forum Modules
    Réponses: 9
    Dernier message: 09/11/2007, 03h01
  3. [Perl Tk] Module Tk::MesgBox (et non messageBox)
    Par Mersenne dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 15/05/2007, 21h15
  4. [xml/perl] quel module ?
    Par Lockless dans le forum Modules
    Réponses: 5
    Dernier message: 28/06/2006, 17h31
  5. mac os X, perl et modules
    Par stoyak dans le forum Modules
    Réponses: 6
    Dernier message: 31/10/2005, 09h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo