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 :

Perl : nom de variable dépendant d'une autre


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 74
    Points
    74
    Par défaut Perl : nom de variable dépendant d'une autre
    Bonjour à tous,

    Dans mon script, j'ai un nom de variables dépendnant d'un compteur de boucle, c'est à dire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ( $i < <fin_boucle> ) {
       $var_$i = <valeur>;
       $i++;
    }
    Comment pourrais je faire celà en Perl ?

    Nicolas.

  2. #2
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser un tableau ? Ca serait quand même beaucoup plus simple...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while ( $i < <fin_boucle> ) 
    {  
       $var[$i] = <valeur>; 
       $i++; 
    }

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 74
    Points
    74
    Par défaut
    Un tableau de liste ne pose pas de problèmes ? (ou un tableau de tableaux ce aui revient au même)

  4. #4
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Non, c'est un des très gros avantages en Perl. Il permet de gérer avec une simplicité étonnante les structures de données complexes, à l'aide d'un mécanisme de référence vraiment bien fait. Renseigne toi dessus !
    Si tu débutes en Perl, je te conseille la lecture de ce excellent cours de Sylvain Lhullier

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 74
    Points
    74
    Par défaut
    Ca ne pose pas de problème mais ça ne réalise pas ce que je souhaite, l'ajout d'une liste dans une liste provoque son applatissement..

  6. #6
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Citation Envoyé par nicolaskarp
    Ca ne pose pas de problème mais ça ne réalise pas ce que je souhaite, l'ajout d'une liste dans une liste provoque son applatissement..
    C'est bien pour ça que je te conseille de te renseigner sur les références !
    Un tableau en Perl ne peut contenir que des scalaires. Mais les références SONT des scalaires, donc un tableau peut contenir des références. Or une référence peut très bien se référer à un tableau, ou même à un tableau de tableau.

    Donc, je réitère, renseigne toi sur les références.

    €dit : et si tu es comme Saint Thomas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $ref = ["tab1ele1", ["tab2ele1", "tab2ele2"], "tab1ele2"];
    print $ref->[0];
    print $ref->[1][0];

  7. #7
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 44
    Points
    44
    Par défaut
    La syntaxe @{...} permet de préciser qu'on a affaire à un tableau

    Le code ci-dessous utilise un 'vrai' tableau de tableaux

    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
    23
    24
    25
    26
    27
    28
    use strict;
    use warnings;
     
    my @ArrayOfArray = ();
     
    my @Array1 = (1,2,3,4,5);
    my @Array2 = (10,20,30,40);
    my @Array3 = ("a",2,1);
     
    @{$ArrayOfArray[0]} = @Array1;
    @{$ArrayOfArray[1]} = @Array2;
    @{$ArrayOfArray[2]} = @Array3;
     
    my $iNbElts = scalar @ArrayOfArray;
     
    for(my $i=0; $i<$iNbElts;$i++)
    {
    	print "FIRST $i : " . join (' - ', @{$ArrayOfArray[$i]}) . "\n";
    }
     
    $Array1[0]=111;
     
    $iNbElts = scalar @ArrayOfArray;
     
    for(my $i=0; $i<$iNbElts;$i++)
    {
    	print "SECOND $i : " . join (' - ', @{$ArrayOfArray[$i]}) . "\n";
    }
    Le deuxième affichage est juste pour bien s'assurer que ce ne sont pas des références qui sont stockées (après modification $Array1[0]=111 )

    Jako

  8. #8
    Membre régulier Avatar de knoodrake
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 86
    Points : 86
    Points
    86
    Par défaut
    et ça existe pas ${'var_'.$i} comme en PHP ?

  9. #9
    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
    Citation Envoyé par knoodrake
    et ça existe pas ${'var_'.$i} comme en PHP ?
    Ca existe mais c'est à éviter... Je te reporte à cette argumentation pour mieux comprendre pourquoi c'est vraiment une très (très) mauvaise idée. PHP a certains manques qui rendent plus attrayant l'idée d'employer des références symboliques (entre autre le manque de namespaces), mais Perl n'en a pas besoin, et c'est tant mieux !!
    (Le pragma "strict" interdit les références symboliques, ce qui contribue à la lente éradication de leur usage, dieu merci)

    --
    Jedaï

  10. #10
    Membre régulier Avatar de knoodrake
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 86
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par Jedai
    Ca existe mais c'est à éviter... Je te reporte à cette argumentation pour mieux comprendre pourquoi c'est vraiment une très (très) mauvaise idée. PHP a certains manques qui rendent plus attrayant l'idée d'employer des références symboliques (entre autre le manque de namespaces), mais Perl n'en a pas besoin, et c'est tant mieux !!
    (Le pragma "strict" interdit les références symboliques, ce qui contribue à la lente éradication de leur usage, dieu merci)

    --
    Jedaï
    D'accord merci beaucoup.

Discussions similaires

  1. [JSP] Créer nom variable à partir d'une autre variable
    Par siva27 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 30/10/2013, 10h08
  2. Réponses: 2
    Dernier message: 29/06/2006, 14h58
  3. Réponses: 12
    Dernier message: 03/04/2006, 20h08
  4. Zone de liste dépendant d'une autre liste
    Par JimmyB dans le forum Access
    Réponses: 7
    Dernier message: 31/03/2006, 23h36
  5. [Conception] récupération d'une variable php dans une autre page
    Par vali7 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/01/2006, 12h19

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