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 :

Allers retours entre le script et le package


Sujet :

Langage Perl

  1. #1
    Membre à l'essai Avatar de myspanique
    Femme Profil pro
    Prof de maths + Stagiaire en informatique
    Inscrit en
    Octobre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prof de maths + Stagiaire en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 23
    Points : 17
    Points
    17
    Par défaut Allers retours entre le script et le package
    Bonjour à vous,

    Pour la création d'un site web, j'ai centralisé la mise en page des ... ben des pages, dans un package.

    En gros, ça donne un truc du genre (dans le package) :
    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
    sub pageType{
    	my ($titre) = @_ ;
    	print "	<table width='100%'>
    		<tr><td colspan = 2>";
    		titrePage($titre);
    	print "	</td></tr>
    		<tr><td width='245px'>";
    		menuGauche();
    	print "	</td><td rowspan = 3>";
    		contenu();
    	print "	</td></tr>
    		<tr><td>";
    		infos();
    	print "	</td></tr>
    		<tr><td>";
    		piedPage();
    	print "	</td></tr>
    		</table>";
    }
    titrePage, menuGauche et piedPage sont définis dans le package, exportés et tout comme il se doit.
    En revanche, j'aimerais que contenu et infos (qui dépendent uniquement de la page) soient définis dans le script.
    Enfin, ils le sont. J'aimerais juste que Perl comprenne qu'il doit les chercher là bas, et non dans la classe !
    Est-ce possible? Si oui, comment?
    J'ai pensé à les définir "à vide" dans la classe et les redéfinir dans mon script, mais, déjà, je ne suis pas experte en redéfinition, et puis, comme l'appel se fait indirectement, depuis le package, ça n'a pas fonctionné.

    Merci d'avance pour votre aide !

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par myspanique Voir le message
    En revanche, j'aimerais que contenu et infos (qui dépendent uniquement de la page) soient définis dans le script.
    Et contenu et infos sont des fonctions, je suppose?

    Dans ce cas, il faut sans doute utiliser des fonctions de rappel (ou callback functions). C'est-à-dire que tu passes des fonctions en paramètre à ta fonction.

    Dans le programme principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sub info {
         # code de la fonction à appeler dans le module
    }
     
    pageType("Titre", \&info); # \&info est une référence vers la fonction info, qui est passée à la fonction pageType
    Dans le module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    sub pageType {
        my ($titre, $info_coderef) = @_ ;
        #...
        print "	</td></tr>
    		<tr><td>";
    		$info_coderef->(); # appel de la coderef contenant le code défini dans la fonction info définie dans le programme principal
        # ...
    }
    Cet exemple est très simple (presque simpliste), mais donne l'idée de base.

    Tu trouveras plus d'explications et des exemples plus variés dans la partie relative aux fonctions de rappel de mon tutoriel sur la programmation fonctionnelle.

    Cela dit, j'ai expliqué comment résoudre le problème que tu as posé et faire ce que tu voulais faire, mais je ne suis pas sûr que tu aies choisi la meilleure façon de coder une appli Web.

    Je ne fais personnellement pas de développement Web, mais, en général, on cherche à séparer le code Perl des données HTML à afficher. Il y a des modules, des templates et de frameworks qui font une grosse partie du travail pour toi (voir par exemple le Template Toolkit et des frameworks comme Dancer, Catalyst, Mojolicious, etc.).

  3. #3
    Membre à l'essai Avatar de myspanique
    Femme Profil pro
    Prof de maths + Stagiaire en informatique
    Inscrit en
    Octobre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prof de maths + Stagiaire en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Ta solution fonctionne au poil, merci !

    Et merci aussi pour le conseil : je vais regarder de plus près ce dont tu me parles.

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

Discussions similaires

  1. [XL-2007] navigation aller-retour entre application VBA et classeur Excel
    Par pithèque dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/01/2012, 06h01
  2. Aller retour entre fenêtres
    Par lili2704 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/03/2008, 17h41
  3. Réponses: 4
    Dernier message: 13/12/2007, 15h12
  4. Réponses: 13
    Dernier message: 30/11/2004, 06h16

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