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 :

problème inversion d'affichage....???


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut problème inversion d'affichage....???
    bonjour,

    je débute totalement en PERL (j'ai commencé hier après-midi ;-)) et j'ai un petit souci: lorsque je fait le code ci dessous, au moment du print "$ligne1";print"toto", il m'affiche systématiquement d'abord toto, PUIS le contenu de la ligne courante lue dans le fichier INFILE1...

    A noter que je suis sous Linux...

    Qqun aurait-il une ébauche de réponse permetant d'aviter ce problème? ça m'aiderait bcp...merci grandement d'avance


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!usr/bin env perl
     
    open(INFILE1,"interactions_2hdm.dat") or die "No Interaction File->Abort";
    open(INFILE2,"vertices.mdl") or die "No vertices file->Abort";
    open(OUTFILE,">Converted_interaction_file.dat") or die "No writing possibilities->Abort";
    while($ligne1=<INFILE1>){
            unless ($ligne1 =~ /#/){
                    @count[22];@count=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
                    print $ligne1;print"toto";
                    $string1=$ligne1;
                    while($string1=~ /u\s/g){$count[0]++;}
                    while($string1=~ /d\s/g){$count[1]++;}
                    while($string1=~ /c\s/g){$count[2]++;}
                    while($string1=~ /s\s/g){$count[3]++;}
                    while($string1=~ /b\s/g){$count[4]++;}
                    while($string1=~ /t\s/g){$count[5]++;}
                    while($string1=~ /e\W/g){$count[6]++;}
                    while($string1=~ /mu\W/g){$count[7]++;}
                    while($string1=~ /ta\W/g){$count[8]++;}
                    while($string1=~ /ve\s/g){$count[9]++;}
                    while($string1=~ /vm\s/g){$count[10]++;}
                    while($string1=~ /vt\s/g){$count[11]++;}
                    while($string1=~ /g\s/g){$count[12]++;}
                    while($string1=~ /w\+/g){$count[13]++;}
                    while($string1=~ /w\-/g){$count[14]++;}
                    while($string1=~ /z\s/g){$count[15]++;}
                    while($string1=~ /h\+ /g){$count[16]++;}
                    while($string1=~ /h\- /g){$count[17]++;}
                    while($string1=~ /a\s/g){$count[18]++;}
                    while($string1=~ /h1/g){$count[19]++;}
                    while($string1=~ /h2/g){$count[20]++;}
                    while($string1=~ /h3/g){$count[21]++;}
     
     
            }
    }
    close INFILE1;
    close INFILE2;
    close OUTFILE;


    [Edit]
    Balises [code] et [/code] ajoutées par 2eurocents.
    Merci d'y penser la prochaine fois
    [/Edit]

  2. #2
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Mauvaise interprétation
    Mon interprétation était mauvaise, il n'y a pas d'inversion, juste un retour à la ligne indésirable...

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bon en fait je viens de m'apercevoir que il n'y a pas d'inversion mais que il y a un retour à la ligne automatique après l'impression de $ligne1...j'ai changé mon code en
    print"$ligne1 toto\n" mais ça ne résoud pas le problème...

    une idée?

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Citation Envoyé par AlSvartr
    Mon interprétation était mauvaise, il n'y a pas d'inversion, juste un retour à la ligne indésirable...
    En fait, lorsque tu lis une ligne de ton fichier, tu ne la chompe pas. La fonction chomp( ) enlève systématiquement tout caractère '\n' trouvé dans une ligne. Ta ligne n'étant pas chompée, tu fais un print de $ligne1 et ton TOTO apparait sur la ligne suivante.

    Pour y remédier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ... ... ...
    while($ligne1=<INFILE1>){
    chomp($ligne1);
    unless ($ligne1 =~ /#/){
    @count[22];@count=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
    print $ligne1;print"toto"; 
    ... ... ...

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Yahoooo ça marche merci du conseil ;-)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Arioch
    tiré d'un autre topic :
    En fait, lorsque tu lis une ligne de ton fichier, tu ne la chompe pas. La fonction chomp( ) enlève systématiquement tout caractère '\n' trouvé dans une ligne. Ta ligne n'étant pas chompée, tu fais un print de $ligne1 et ton TOTO apparait sur la ligne suivante.
    Chomper, c'est une chose mais le problème est apparemment que toto est affiché AVANT ligne1, et non pas dessous... A moins que l'énoncé du problème ne soit pas clair ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    C'est donc bien un chomp qu'il faut faire... 8)

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    L'énoncé du problème n'est effectivement pas clair au départ

  9. #9
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En fait, le sortie est assez longue, et il semblait que toto et le contenu de $ligne1 était inversé...ce qui n'est finalement pas le cas, il y avait un retour à la ligne systématique ce qui avait comme conséquence dans le fichier de sortie que le "toto" de la ligne d'avant se mettait juste devant le contenu de $ligne1 "suivante"...et donnait ainsi l'impression d'une inversion...

    Désolé je n'ai effectivement pas été très clair

Discussions similaires

  1. Problème avec l'affichage de souris INT 33,01h
    Par belgampaul dans le forum Assembleur
    Réponses: 7
    Dernier message: 07/12/2004, 21h37
  2. Problème liste d'affichage
    Par nicolas66 dans le forum OpenGL
    Réponses: 6
    Dernier message: 06/12/2004, 10h10
  3. Problème de mémoire Affichage images
    Par Repti dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2004, 20h06
  4. Réponses: 11
    Dernier message: 16/12/2003, 19h58
  5. Problème a l'affichage dans la console (printf)
    Par PhoneKilleR dans le forum C
    Réponses: 21
    Dernier message: 23/09/2003, 17h21

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