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 :

recuperer pls ligne en une var perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut recuperer pls ligne en une var perl
    bonjour,
    d'avance merci pour votre aide
    d'abord voila ce que je dois traité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    A2/APZ "MSY1-FR3712-N10" 269 070608 1731 	PORT BLOCKED	
    	PORT STATE LU	
    	1- 1- 2- 3 AB 1- 1- 2	
    	LINK SETUP FAILURE	
    A2/APZ "MSY1-FR3712-N10" 403 070609 0656 	CP FAULT	
    O1/APZ "MSY1-FR3712-N10" 004 070608 1617 	PORT BLOCKED	
    	PORT STATE LU	
    	1- 1- 1- 4 MB 1- 2- 1	
    	PORT MANUALLY BLOCKED	
    O1/APZ "MSY1-FR3712-N10" 005 070608 1617 	LINE UNIT BLOCKED
    je voudrais récupèrer ce qu'il ya entre le deux ligne à chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A2/APZ "MSY1-FR3712-N10" 269 070608 1731 	PORT BLOCKED
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A2/APZ "MSY1-FR3712-N10" 403 070609 0656 	CP FAULT
    c-a-d
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	PORT STATE LU	
    	1- 1- 2- 3 AB 1- 1- 2	
    	LINK SETUP FAILURE
    mais le problème est que je n'ai pas à chaque fois la même chose pour passer ma regex
    dès fois j'ai deux ligne dès fois pas de ligne et dès fois plus
    je vous prie de bien m'aider sur ce point
    MERCI

  2. #2
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bonjour,

    Je ne suis pas sûr de comprendre ton problème, mais si c'est ce que je pense un petit flag serait suffisant. C'est à dire que dès le moment où tu croises ta ligne de départ, tu positionne une variable (initialisée de base à 0) à 1 par exemple, et dès que cette variable est à 1 tu mémorises chaque ligne dans un tableau. Puis, dès que tu rencontres la ligne de fin, tu repasses ta variable à 0.
    Cela te conviendrait-il ? Où alors, ais-je mal compris ton problème ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut
    oui ça doit être comme ça,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    my $in = 0;
    my $var
    if ( not $in and m/^\s*([\d\w]+)/([\d\w]+)\s+"([\d\w\-]+)"\s+([\d\w]+)\s+([\d\w]+)\s+([\d\w]+)\s+(.*)$/ ) {
         $in = $1;
    #comment mettre ce qu'il ya entre les deux dans un variable $var (je voudrais concaténer les ligne dans une seule variable)
     
    $var .= " ".??????;
    }
    elsif ( $in == 1 and m/^\s*([\d\w]+)/([\d\w]+)\s+"([\d\w\-]+)"\s+([\d\w]+)\s+([\d\w]+)\s+([\d\w]+)\s+(.*)$/  ) {
    			$in = 0;
    			}
    voila ce que je vois mais est ce que vous pouvez me finaliser les ??????
    merci d'avance

  4. #4
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Ca serait pas :
    Par hasard ?

    Par contre, avec cette forme, fait attention à bien initialiser $var, sinon au premier tour de boucle tu vas avoir un magnifique warning (ou même une erreur) parce que tu tenteras de concatener $_ à undef.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut
    j'arrive pas à matcher ce qu'il y a entre les deux ligne
    je ne matche que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    O1/APZ "MSY1-FR3712-N10" 005 070608 1617 	LINE UNIT BLOCKED
    voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    		my $w = 0;
    		my $var = '';
    			if ($w == 1	and m{^\s*([\d\w]+)/([\d\w]+)\s+"([\d\w\-]+)"\s+([\d\w]+)\s+([\d\w]+)\s+([\d\w]+)\s+(.*)$}x){
    				$var .= " ".$_;	
    				$w = 2;
    				}
    			if ($w == 2	and m{^\s*([\d\w]+)/([\d\w]+)\s+"([\d\w\-]+)"\s+([\d\w]+)\s+([\d\w]+)\s+([\d\w]+)\s+(.*)$}x){
    				$w = 0;
    			}

  6. #6
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    C'est normal, vérifie ton code : il teste les deux conditions d'un coup, or ce n'est pas ce que tu veux. Il y a la condition Si flag est à 1 alors écrire et la condition si ligne reseemble à tel motif alors passer flag à telle valeur.
    Toi tu testes les deux d'un coup. Sépare les deux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SI ligne = motif_début ALORS
       flag <- 1
    FIN SI
    SI flag = 1 ALORS
       concatener var et ligne
    FIN SI
    SI ligne = motif_fin ALORS
       flag <- 0

Discussions similaires

  1. [C#] recuperer les lignes d'une textbox
    Par arflam dans le forum Débuter
    Réponses: 2
    Dernier message: 04/04/2012, 01h08
  2. recuperation des lignes d'une TextBox
    Par Etudiante_Ines dans le forum Silverlight
    Réponses: 2
    Dernier message: 25/04/2011, 16h37
  3. REXX comment recuperer les lignes d'une commande TSO
    Par jrlamendin dans le forum z/OS
    Réponses: 2
    Dernier message: 19/03/2009, 19h27
  4. Comment recuperer plusieurs lignes dans une requete ?
    Par davebarns dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/05/2008, 18h58
  5. recupere la ligne d'une selection
    Par skillipo dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/12/2007, 19h37

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