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 :

probleme avec la fonction push


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut probleme avec la fonction push
    bonjour ,
    j'ai un problème au niveau de la fonction push. Ce bout de code permet de recuperer des mots presents dans un fichier et les mettre dans une liste .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (!open (Fic,"mots_vides.txt") )
       {print("Erreur d'ouverture de $file : fichier mots vides \n ") ; exit(0);} 
      @liste=(); 
      $i=1;
       while ($vides=<Fic>){
       	chomp($vides);
     	@liste=push(@liste, $vides);
    	print (" valeur $i :  $liste[$i] \n");
    	$i++;
       }
    mais le probleme @liste est vide ce qui n'est pas le cas de $vides.
    merci d'avance

  2. #2
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    il faut plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    push @liste, $vides;
    car :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @liste=push(@liste, $vides);
    renvoie dans @liste le contexte du résultat du push, et non le résultat de push. donc @liste est réinitialisé avec un tableau à 1 élément... contenant la taille de l'ancien tableau !

    @+
    Mr6

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    merci pour ta reponse , j'ai essayé ce que tu a dit mais ça ne marche pas
    je suis bloqué dessus depuis hier je ne sais pas quoi faire .

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    je prefere mettre des parentheses!!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    ça ne marche toujours pas
    en essayant
    et
    toujours pas de valeurs dans $liste

  6. #6
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    normal, le 1er élément d'un tableau est 0, donc en mettant $i à 1 par défaut, tu regardes l'élément d'après, donc théoriquement pas encore renseigné...

  7. #7
    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
    Citation Envoyé par visteur
    ça ne marche toujours pas
    en essayant
    et
    toujours pas de valeurs dans $liste
    C'est tout à fait normal ... il y a une grosse erreur !

    $i est initialisé à 1, et tu fais un affichage de $liste[$i].

    Or, les listes sont numérotées à partir de 0, et le premier élément "pushé" est donc de rang 0.

    Résultat des courses, tu "push" $liste[0] et tu affiche $liste[1], qui est vide ...

    Comme ça, c'est mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          push(@liste, $vides);
          print (" valeur $i :  $liste[$i-1] \n");
    Edit : Arf, grillé par Mr6
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    super ça marche
    merci à tous

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

Discussions similaires

  1. Probleme avec la fonction Ontimer
    Par Djule dans le forum MFC
    Réponses: 8
    Dernier message: 27/11/2005, 17h52
  2. Probleme avec la fonction rename()
    Par TheZenZen dans le forum C
    Réponses: 6
    Dernier message: 08/10/2005, 15h59
  3. [LG] Problème avec la Fonction ReadLn en fin de programme
    Par killermano dans le forum Langage
    Réponses: 6
    Dernier message: 23/07/2005, 15h16
  4. [LG]Probleme avec une fonction
    Par xavier1936 dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2005, 22h48

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