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 :

Paramétrer le nom du module à exécuter


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    juillet 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : juillet 2020
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Paramétrer le nom du module à exécuter
    Bonjour

    Le programme principal cherche à appeler le module "bonjour" puis le module "bonsoir" via "jouerModule";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/perl -w
     
    use warnings;
    use strict;
    use moduleTest ;
     
    &moduleTest::jouerModule(\&moduleTest::bonjour);
    &moduleTest::jouerModule(\&moduleTest::bonsoir);
    Le moduleTest.pm contient les modules cités
    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
    use warnings;
    use strict;
    package moduleTest;
     
    sub jouerModule{
    	my $mod = $_;
    	print "Alors,";
    	$mod;
    }
     
    sub bonjour{
    	print "bonjour\n";
    }
     
    sub bonsoir{
    	print "bonsoir\n";
    }
     
    1;
    Et je n'obtiens que Je souhaite afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Alors,bonjour
    Alors,bonsoir
    Je loupe qq chose sur le déréférencement du module à appeler, mais quoi ?

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    mars 2009
    Messages
    2 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : mars 2009
    Messages : 2 581
    Points : 5 823
    Points
    5 823
    Par défaut
    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
    package moduleTest;
    use strict;
    use warnings;
     
    sub jouerModule{
    	my $mod = shift;
    	print "Alors,";
    	&$mod; # on ajoute le sigil & pour déréférencer 
    }
     
    sub bonjour{
    	print "bonjour\n";
    }
     
    sub bonsoir{
    	print "bonsoir\n";
    }
     
    1;
    Par contre dans le main, pas besoin de mettre les sigils devant les appels de jouerModule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    moduleTest::jouerModule(\&moduleTest::bonjour);
    moduleTest::jouerModule(\&moduleTest::bonsoir);
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    juillet 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : juillet 2020
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse rapide.

    J'avais encore un soucis :
    Use of uninitialized value in subroutine entry at moduleTest.pm line 8.
    Can't use string ("") as a subroutine ref while "strict refs" in use at moduleTest.pm line 8.
    Ce soucis est résolu de façon étrange :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    package moduleTest;
    use strict;
    use warnings;
    fonctionne désormais (copie de ton code), tandis que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    use warnings;
    use strict;
    package moduleTest;
    ne fonctionne pas (mon ancienne version).
    Ça me laisse perplexe ! Je serai curieux de savoir pourquoi ?

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    19 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 19 817
    Points : 499 148
    Points
    499 148
    Par défaut
    Bonjour,

    Un peu de lecture avec ce tutoriel sur la programmation objet.

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

Discussions similaires

  1. Nom du module dans lequel s'exécute le code
    Par Le Sage dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/12/2013, 08h40
  2. Réponses: 16
    Dernier message: 25/10/2005, 08h59
  3. Réponses: 1
    Dernier message: 18/10/2005, 17h31
  4. récupérer le nom du module
    Par jbaudin dans le forum Access
    Réponses: 12
    Dernier message: 30/08/2005, 10h36
  5. [ PL/pgSQL ] Passage de paramètres et nom de table
    Par Dam)rpgheaven dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/06/2005, 15h34

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