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 :

Contenu de variable qui change.


Sujet :

Langage Perl

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut Contenu de variable qui change.
    Bonsoir à tous,

    J'ai un pb avec le code ci-dessous, pourtant trivial.

    Dans la boucle, je récupère correctement le n° de série dans $line, mais lorsque je sors de la boucle, $line est vide ! De ce fait, mon code ne marche pas, et affiche :
    Voici le SN : 123456
    Voici le SN : empty

    J'ai du passer à côté d'une énormité, mais je ne vos pas laquelle. Pourriez-vous m'aider ?

    Merci.

    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
     
    my $line = "empty"; 
    my $file = "/sn_file.txt";
    open (F, "< $file");
    while (my $line = <F>)
     {
     #Parcourir ligne par ligne le document, rechercher et isoler le n° de série
     if ( $line =~ /^SN/ ) 
      {
       substr($line,0,6)="";   # Supprimer les 4 caractères avant le SN
      substr($line,32,1000)="";  # Supprimer tous les caractères situés après le SN
        chomp($line); 
      print "Voici le SN : $line"; # debug  
      }
     }
    close F; 
     
    print "\nVoici le SN : $line";
    print "\n";print "\n";
    exit;

  2. #2
    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
    C'est simplement parce que tu déclares (avec my()) $line comme variable lexicale spécifique à la la boucle (la variable $line dans la boucle et la variable $line à l'extérieur ne sont pas les mêmes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while (my $line = <F>)
    Soit tu déclares $line à l'extérieur de la boucle (ce que tu as déjà fait) et tu utilises cette variable $line dans la boucle ("while ($line = <F>)"), soit tu utilises une autres variable déclarée hors de la boucle. Je te conseille plutôt cette deuxième solution : d'une part c'est plus propre, tu peux lui donner un nom plus parlant, d'autre part avec la première solution que j'ai évoqué $line vaudra undef après la boucle (puisque c'est la valeur que renvoie <F> lorsqu'on a atteint la fin du fichier) :
    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
     
    my $last_line = "empty"; 
    my $file = "/sn_file.txt";
    open (F, "< $file");
    while (my $line = <F>)
     {
     #Parcourir ligne par ligne le document, rechercher et isoler le n° de série
     if ( $line =~ /^SN/ ) 
      {
       substr($line,0,6)="";   # Supprimer les 4 caractères avant le SN
      substr($line,32,1000)="";  # Supprimer tous les caractères situés après le SN
        chomp($line); 
      print "Voici le SN : $line"; # debug  
      $last_line = $line;
      }
     }
    close F; 
     
    print "\nVoici le SN : $last_line";
    print "\n";print "\n";
    exit;
    --
    Jedaï

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Mince, c'est gros comme une maison, et je suis passé à côté sans rien voir
    => Je vais bien entendu utiliser une autre variable.

    Merci pour ta réponse rapide Jedai !

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

Discussions similaires

  1. contenu de div qui change selon choix dans liste de boutons radios ?
    Par cuisto44000 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/12/2008, 16h10
  2. Variable qui change de valeur toute seul :(
    Par lcfseth dans le forum C
    Réponses: 12
    Dernier message: 22/12/2007, 12h25
  3. [JMeter] Récupration d'une variable qui change à chaque process
    Par vendeeman dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 11/12/2007, 12h00
  4. Réponses: 6
    Dernier message: 18/01/2007, 10h24
  5. Variable qui change après un DispatchMessage
    Par SekYo dans le forum Windows
    Réponses: 9
    Dernier message: 30/09/2004, 16h22

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