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 :

Noms de Variables dynamiques


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Noms de Variables dynamiques
    Bonjour,

    Je débute en Perl et j'aurai voulu savoir si il était possible d'utiliser des noms de variables dynamiques en perl. En effet je voulais utiliser ce type de variable pour récupérer des informations d'un formulaire html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input size=3 name="Toto-<%$Variable%>">
    Comment est-il possible de récupérer la valeur de mes variables ?

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut
    Heu peut tu etre plus précis

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    J'utilise une boucle ayant pour variable $Variable pour créer plusieurs champs de saisie. Cette boucle me crée donc les variables :
    • Toto-xxx
      Toto-yyy
      Toto-zzz
      ...

    Je voudrais pouvoir afficher ces variables : je voudrais pouvoir faire quelquechose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $result = "Toto-" . $Variable; #$result contient le nom de la variable voulue sous forme de string
    print $( $result );
    Je voudrais afficher le contenu d'une variable dont le nom lui-même est variable ...

    J'espère avoir été plus clair.

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    L'utilisation de noms de variables dynamique, même si elle est possible, est une très mauvaise idée, en Perl.

    En effet, un des effets de l'utilisation de variables aux noms dynamiques est qu'il n'est plus possible d'utiliser le garde-fou que représente le controle strict des variables, avec obligation de déclaration (use strict.

    Cependant, tout n'est pas perdu.

    En effet, pourquoi ne pas utiliser le mécanisme des hachages pour simuler ces variables au noms dynamique ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my %toto;
     
    $toto{xxx}=50;
    $toto{yyy}=100;
    $toto{zzz}=150;
    Ceci me semble un pis-aller plus qu'acceptable !

    Bon courage.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Je crois que je vais essayer ca.

    Merci beaucoup

  6. #6
    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
    Voici un bout de la doc du module CGI qui répond exactement à la question posé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
    18
    19
    20
    21
    22
     
    FETCHING THE NAMES OF ALL THE PARAMETERS PASSED TO YOUR SCRIPT:
     
         @names = $query->param
     
    If the script was invoked with a parameter list (e.g. ``name1=value1&name2=value2&name3=value3''), the param() method will return the parameter names as a list. If the script was invoked as an <ISINDEX> script and contains a string without ampersands (e.g. ``value1+value2+value3'') , there will be a single parameter named ``keywords'' containing the ``+''-delimited keywords.
     
    NOTE: As of version 1.5, the array of parameter names returned will be in the same order as they were submitted by the browser. Usually this order is the same as the order in which the parameters are defined in the form (however, this isn't part of the spec, and so isn't guaranteed).
     
    FETCHING THE VALUE OR VALUES OF A SINGLE NAMED PARAMETER:
     
        @values = $query->param('foo');
     
                  -or-
     
        $value = $query->param('foo');
     
    Pass the param() method a single argument to fetch the value of the named parameter. If the parameter is multivalued (e.g. from multiple selections in a scrolling list), you can ask to receive an array. Otherwise the method will return a single value.
     
    If a value is not given in the query string, as in the queries ``name1=&name2='' or ``name1&name2'', it will be returned as an empty string. This feature is new in 2.63.
     
    If the parameter does not exist at all, then param() will return undef in a scalar context, and the empty list in a list context.
    La documentation de Perl est très conséquente et très complète, profitez-en !!!!

    --
    Jedaï

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Voila, le module CGI fait exactement ce que je voulais.

    Merci

  8. #8
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Alors, il ne faudra pas oublier d'ajouter le tag [Résolu] sur le sujet, en partant
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

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

Discussions similaires

  1. [PERL] Nom de Variable Dynamique
    Par mcshu dans le forum Langage
    Réponses: 13
    Dernier message: 22/11/2006, 20h42
  2. [JSTL] nom de variable "dynamique"
    Par gmonta31 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 04/05/2006, 13h31
  3. Nom de variable dynamique
    Par mavina dans le forum Linux
    Réponses: 7
    Dernier message: 26/04/2006, 20h48
  4. Réponses: 4
    Dernier message: 13/09/2005, 11h50
  5. [SQL SERVER 2000] Noms de variables dynamiques
    Par cassoulet dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/09/2004, 11h44

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