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 :

Substitution dans une boucle for


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 93
    Par défaut Substitution dans une boucle for
    bonjour,

    je débute en perl, et je voulais savoir s'il état possible de faire ceci:

    J'ai une subroutine nommé : regles($$@)
    A la fin de mon script, j'aimerais faire plusieurs appels à cette fonction avec des variables diffèrentes tel que $var1, $var2, $var3 ou encore @tab1, @tab2, @tab3.

    Donc est-il possible de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for ( $i = 1; $i <= 3; $i++ )
    {
       regles ( $i, $var.$i, @tab.$i )
    }
    Merci

  2. #2
    Membre chevronné
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Par défaut
    Version courte : non.

    Version longue : tu devrais utiliser des tableaux à la place.

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Version "ne pas suivre ce conseil" : c'est possible mais pas avec cette syntaxe (et c'est interdit avec use strict)
    Version "suivre ce conseil" : choisir la réponse longue de Schmorgluck

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 93
    Par défaut
    D'abord merci de vos réponses.

    J'ai donc utilisé des tableaux. Mais je bloque sur ce point désormais.

    J'ai crée mon tableau :
    et j'utilise comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $tableau[0][0] = $var1;
    $tableau[0][1] = $var2;
    $tableau[0][2] = [@tab1];
    Je me trompais au début en oubliant les [ ] autour de l'affectation de @tab1.
    Mais j'ai un problème si je veut afficher le tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "$tableau[0][0] -  $tableau[0][1] - $tableau[0][2] ";
    J'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    4 -  6 - ARRAY(0x2164cd0)
    Si j'ai bien tout lu freud, en réalité j'obtiens l'adresse de mon tableau mais pas son contenu ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Ton élément $tableau[0][2] contient un tableau dont les éléments sont ceux de @tab1.

    Pour accéder aux éléments de $tableau[0][2], il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print $tableau[0][2][0], $tableau[0][2][1];
    Mais je suppose que ce n'est pas ainsi que tu souhaitais organiser ton tableau.

    En fait, en perl, il n'existe que trois types de données :
    - les scalaires
    - les tableaux de scalaires (et uniquement de scalaires)
    - les tables de hachage dont la clé et la valeur sont des scalaires

    Pour "émuler" des tableaux à plusieurs dimensions, perl utilise des scalaires représentant des références de tableaux, qu'il place dans des tableaux.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @tableau = ([1, 2], [10, 20], [100, 200]);
    print "$tableau[0][1] $tableau[2][0]\n"; #ecrit 2 100
    Personnellement, pour bien identifier le fait qu'il ne s'agit pas de tableau à plusieurs dimension, je préfère utiliser la notation de déréférencement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @tableau = ([1, 2], [10, 20], [100, 200]);
    print "$tableau[0]->[1] $tableau[2]->[0]\n"; #ecrit 2 100
    On peut aussi imaginer que les tableaux imbriqués n'aient pas tous la même longueur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @tableau = ([1, 2, 3], [10, 20, 30, 40], [100, 200]);
    print "$tableau[0][1] $tableau[2][0]\n"; #ecrit 2 100
    Pour plus d'infos :

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 93
    Par défaut
    Merci pour ton explication.

    Après quelque tâtonnement, je suis arrivé à ce que je voulais.
    J'utilise un for pour envoyer à ma routine, une ligne complète de mon tableau.

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

Discussions similaires

  1. multi ouverture de la console dans une boucle for
    Par jamesleouf dans le forum C++
    Réponses: 2
    Dernier message: 16/03/2006, 21h26
  2. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45
  3. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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