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

Modules Perl Discussion :

Accès à un module externe par une variable


Sujet :

Modules Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Accès à un module externe par une variable
    Je ne sais pas si mon titre est clair.
    J'ai besoin, dans le cadre d'un projet, de charger des modules (.pm) de manière dynamique. C'est à dire que le script principal (.pl) va lire dans un fichier la liste des modules qu'il doit charger. Je récupère donc les modules sous forme de chaines dans des variables. Je les charge avec des "require", puis après, j'essaie d'accéder à des fonctions du module, mais je n'arrive pas à résoudre la portée avec une variable.

    J'ai d'abord fait un test simple, la ligne qui ne marche pas est en gras:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sub main
    {
    	my $library = "test_module";	
    	printf("Avant chargement du module $library\n");
    	require $library.".pm";
    	printf("Apres chargement du module $library\n");	
    	$library::print_test();
    }
     
    main();
    Est-ce que quelqu'un sait comment mettre en place ce genre de mécanisme ? (J'aimerai que $library soit interprété comme une résolution de portée)

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Utilise juste print_test() et fais le exporter par tes modules à charger (n'oublie pas d'utiliser $library->import() avant).

    --
    Jedaï

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci, effectivement, ça marche...
    J'ai rempli les tableaux @ISA et @EXPORT dans le module.. et j'ai appelé import() dans le script principal. Je ne savais pas qu'on pouvait le faire.

    Dernière question : je vais charger plusieurs modules qui vont respecter la même signature. Dans l'exemple, ce serait un deuxième module qui aurait la même fonction print_test(). Est-ce qu'il ne peut pas y avoir un conflit puisqu'on importe deux mêmes fonctions ? Ou est-ce que c'est géré avec un contexte local ?

    J'ai écrit les lignes suivantes, et dans mon cas ça marche, c'est bien la fonction print_test de chaque module qui est appelée... :

    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
    sub main
    {
    	my @library;
    	$library[0] = "test_module";
    	$library[1] = "test_module_deux";
     
    	foreach my $elt (@library)
    	{
    		printf("Avant chargement du module $elt\n");
    		require $elt.".pm";
    		printf("Apres chargement du module $elt\n");	
    		$elt->import();
    		print_test();
    	}
    }
     
    main();
    Je voudrai comprendre le mécanisme pour commencer à développer mon projet.

    En tout cas merci, pour ta réponse, Jedaï.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bon j'ai un autre problème, mais je vais poster un nouveau sujet.
    En tout cas, merci pour la petite aide.

    Résolu.

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

Discussions similaires

  1. acces aux ressources par une variable?
    Par lowfee dans le forum VB.NET
    Réponses: 17
    Dernier message: 09/11/2010, 19h47
  2. [DOM] Accès au DOM par une variable
    Par riete dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/07/2008, 17h34
  3. Sélection nom de module par une variable
    Par MarneusCalgarXP dans le forum Langage
    Réponses: 9
    Dernier message: 12/07/2007, 14h05
  4. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07
  5. [Tomcat]Droit d'accès aux fichiers créés par une servlet
    Par loulouleboss dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 15/07/2004, 14h32

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