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 :

[expreg] Readonly module


Sujet :

Langage Perl

  1. #1
    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 [expreg] Readonly module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    use Readonly;
     
    my $id = ">gi|161138348|gb|EU128674.1| Brucella abortus strain 2308 pathogenicity island PAIB1 sequence";
     
    Readonly::Scalar my $GI		=> qx{gi\|(\d+)\|}xms;
    Readonly::Scalar my $GB		=> qx{gb\|([.\w]+)\|}xms;
    Readonly::Scalar my $DEFINITION	=> qx{(.+)\z}xms;
    Readonly::Scalar my $ID		=> qx{($GI)($GB)($DEFINITION)}xms;
     
    my ($gi, $gb, $definition) = $id =~ $ID;
    Erreurs :
    Unrecognized escape \d passed through at RX_Perl_Best_Practices.pl line 48.
    Bareword found where operator expected at RX_Perl_Best_Practices.pl line 48, near "qx{gi\|(\d+)\|}xms"
    Unrecognized escape \w passed through at RX_Perl_Best_Practices.pl line 49.
    Bareword found where operator expected at RX_Perl_Best_Practices.pl line 49, near "qx{gb\|([.\w]+)\|}xms"
    Unrecognized escape \z passed through at RX_Perl_Best_Practices.pl line 50.
    Bareword found where operator expected at RX_Perl_Best_Practices.pl line 50, near "qx{(.+)\z}xms"
    Bareword found where operator expected at RX_Perl_Best_Practices.pl line 51, near "qx{($GI)($GB)($DEFINITION)}xms"
    syntax error at RX_Perl_Best_Practices.pl line 48, near "qx{gi\|(\d+)\|}xms"
    syntax error at RX_Perl_Best_Practices.pl line 49, near "qx{gb\|([.\w]+)\|}xms"
    syntax error at RX_Perl_Best_Practices.pl line 50, near "qx{(.+)\z}xms"
    syntax error at RX_Perl_Best_Practices.pl line 51, near "qx{($GI)($GB)($DEFINITION)}xms"
    Execution of RX_Perl_Best_Practices.pl aborted due to compilation errors.
    J'utilise Perl 5.8.8 je peux donc utiliser Readonly::Scalar ou simplement Readonly.
    Pourriez-vous m'aider à corriger ce code s'il vous plait?
    Que pensez-vous de toujours utiliser /xms ... j'ai l'impression que cela complique les choses mais probablement est-ce parce que je n'ai pas encore l'habitude de les utiliser.

    Merci.

  2. #2
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Bonjour.

    Tu es sûre que tu ne voulais pas plutôt écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Readonly::Scalar my $GI=> qr{/gi\|(\d+)\|/xms};
    C'est à dire qr au lieu de qx et avec les modifieurs xms dans le qr.

  3. #3
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use Readonly;
     
    my $id = ">gi|161138348|gb|EU128674.1| Brucella abortus strain 2308 pathogenicity island PAIB1 sequence";
     
    Readonly::Scalar my $GI		=> qr{gi\|(\d+)\|}xms;
    Readonly::Scalar my $GB		=> qr{gb\|([.\w]+)\|}xms;
    Readonly::Scalar my $DEFINITION	=> qr{(.+)\z}xms;
    Readonly::Scalar my $ID		=> qr{$GI$GB$DEFINITION}xms;
     
     
    my ($gi, $gb, $definition) = $id =~ $ID;
    ... faudra que je m'achète de lunettes ^^ c'était bien qr au lieu de qx. Ce script fonctionne maintenant. J'ai utilisé qr{} au lieu de qr// le xms était donc bien placé

    Utilises-tu xms dans tes expreg?


    Merci beaucoup pour ton aide.

  4. #4
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Citation Envoyé par Jasmine80
    Utilises-tu xms dans tes expreg?
    Selon mon besoin.

    /x quand il vaut mieux commenter pour être à même de comprendre ce qu'on a écrit quelques semaines auparavant. Je ne l'utilise pas si je ne commente pas l'expression régulière car cela ignore les espaces.

    /ms si je traite une chaîne multiligne, donc pas par défaut. et parfois juste /s, si je veux simplement matcher dans l'ensemble de la chaîne (par exemple avec un \n au milieu).

  5. #5
    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
    Je pose la question parce que dans le livre 'Perl Best Practices' d'O'Reilly, ils conseillent de l'utiliser systématiquement.

  6. #6
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Oui, cela fait partie des règles du Best practices que j'enfreins sciemment, en me disant que cela me force à bien connaître le fonctionnement des ancres sous Perl.

    Ce qui est bien quand on connaît ce type de règles, c'est qu'on comprend mieux ce qu'on y gagne et ce qu'on y perd à les appliquer. C'est en cela que je trouve Best practices très utile : il donne une vue d'ensemble des forces et des dangers du langage, forces et dangers qui sont souvent liés.

    Mais tu as raison dans beaucoup de cas mieux vaut opter pour la lisibilité et la sécurité.

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

Discussions similaires

  1. Module FTP.pm ?
    Par MSP dans le forum Modules
    Réponses: 4
    Dernier message: 04/08/2003, 15h49
  2. module Find
    Par martijan dans le forum Modules
    Réponses: 8
    Dernier message: 09/07/2003, 11h07
  3. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44
  4. PerlDoc sur une fonction d'un module
    Par lesouriciergris dans le forum Modules
    Réponses: 2
    Dernier message: 13/03/2003, 20h50
  5. combobox et readonly
    Par Mac leod dans le forum C++Builder
    Réponses: 6
    Dernier message: 28/11/2002, 10h27

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