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 :

Arreter la lecture du fichier


Sujet :

Langage Perl

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Par défaut Arreter la lecture du fichier
    Bonjour,

    Je cherche a arreter la lecture de mon fichier quand je recontre un motif précis.

    Est ce que ceci est correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while ( my $ligne = <FICHIER>) {
    	if ($ligne =~ m/^\tMonMotif/ .. defined $ligne) {
    		...
    		...
    		...
    		...
    		last
    	}
    }
    Ou bien avait vous une solution ?

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 184
    Par défaut
    Utilise l'instruction last.

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Par défaut
    J'ai testé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	if ($trouve) {
    		if ($ligne=~/\t{2}Application Actions/) {last;} 
    			if ( $ligne =~ m/\t*Function:\s*(.+)/ ){
    				print $cpt, "\t";
    			}
    		}
    	if ($ligne=~/Application Description:/) {$trouve=1;}
    mais il ne s'arrete pas !!

    Je voudrais débuter la lecture dès le debut du fichier (qui commence par "Application Description:" ) et j'arreter dès que je rencontre "Application Actions" afin de récupérer mes Function:

  4. #4
    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
    Tout dépend s'il existe plusieurs boucles imbriquées, auquel cas, last s'applique seulement à la dernière imbrication.
    Pour préciser la boucle à terminer, il faut la labelliser (ou utiliser un indicateur de fin) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FICHIER: while (<STDIN>) {
       if (/fin/) {
          last FICHIER;
       }
    }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while (!$fini && (my $line = <STDIN>)) {
       if ($line =~ /fin/) {
          $fini = 1;
       }
    }

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Par défaut
    merci mais j'y arrive pas...

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if ( $ligne =~ m/\t*Function:\s*(.+)/ && $fini !=1) {
     
    		if ($ligne=~/\t{2}Application Actions/) {
    			$fini = 1;
    		}
    		else{
    		print $cpt, "\t";
    		}
    	}
    comme ça non plus ça ne marche pas :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	my $fini = 0;
     
     
    if ($ligne=~/\t{2}Application Actions/) {
    		$fini = 1;
    	}
     
    	if ( $ligne =~ m/\t*Function:\s*(.+)/ && $fini == 0) {
    		print $cpt, "\t";
    	}
    tu as une idée ?

  6. #6
    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
    Oups... désolé, j'avais corrigé dans mon script réel, mais j'ai oublié de mettre à jour le message... il faut inverser les conditions dans le while.
    J'ai corrigé le post de 11h51 !
    Désolé.

  7. #7
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Par défaut
    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ( $fini == 0 && $ligne =~ m/\t*Function:\s*(.+)/) {
    		if ($ligne=~/\t{2}Application Actions/) {
    		$fini = 1;
    		}
    		if ($fini == 0){
    		print $cpt, "\t";
    		}
    	}
    Ca ne marche tjs pas, je parcours l'intégralité du fichier.
    Alors que pour moi mon code dit :

    Si fini = 0 et que ma ligne = Function
    alors si ma ligne = Application Actions alors fini = 1
    sinon si fini = 0 alors je print ma ligne.

    Mon programme me print tt les lignes de mon code qui commence par Functions au lieu de s'arreter quand il rencontre Application Action

    une idée?

  8. #8
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Par défaut
    c'est bon j'ai résolu !

    mon code correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	if ($ligne=~/\t*Application Actions/) {
    		$fini = 1;
    		print  "\n" ,"ligne : " , $cpt, "\n";
    		}
     
    	if ( $fini == 0 && $ligne =~ m/\t*Function:\s*(.+)/) {
     
    		if ($fini == 0){
    		print $cpt, "\t";
    		}
    	}
    pb de syntaxe !

    merci encore

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

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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