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

Programmation et administration système Perl Discussion :

recupération de ligne


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Par défaut recupération de ligne
    Bonjour,

    Je voudrais récupérer toutes les lignes d'un fichier, sauf celle comportant certains mots.

    Voici le début de mon script dans lequel je souhaiterai tester, si ma ligne ne contient pas le mot de la liste de mon tableau, alors je l'affiche.

    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 $FicPresence="C:_toto.txt";
    	my @GestionLigneEnteteExclu=("LogicalName","PhysicalName", "lignes","---");
     
    	open (FIC_READ, "<${TempSql}/${FicPresence}")  || die "Ouverture impossible du fichier ${FicPresence}: $!";
    	while (my $Ligne = <FIC_READ> ) 
    	{  	
    		#remplacement des espaces par des "-"
                             $Ligne =~ s/[\s]/\|/g;
     
    		if (grep { $Ligne =~ m/$_/g } @GestionLigneEnteteExclu)
    		{ 
    			print"on n'affiche rien" ; 	
    		}
    		else {
    			print">>$Ligne\n" ; 
    		}
     
    	}
    close (FIC_READ) ;
    Comment afficher la négation ?? merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Que veux-tu dire par "comment afficher la négation"? Je ne comprends pas la question.

    Sinon, juste un petit commentaire. Dans ce genre de cas, pour exclure une ligne de la suite d'un traitement je préfère faire quelque chose comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	while (my $Ligne = <FIC_READ> ) {  	
    		#remplacement des espaces par des "-"
                    $Ligne =~ s/[\s]/\|/g;
     		next if grep { $Ligne =~ m/$_/g } @GestionLigneEnteteExclu;
    		print">>$Ligne\n" ; 
    	}
    ou encore:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	while (my $Ligne = <FIC_READ> ) {  	
    		#remplacement des espaces par des "-"
                    $Ligne =~ s/[\s]/\|/g;
     		print">>$Ligne\n" unless grep { $Ligne =~ m/$_/g } @GestionLigneEnteteExclu; 
    	}
    Cela donne du code plus compact, avec moins de signes de ponctuation et à mon avis plus facile à lire (moins de blocs imbriqués). Mais ce n'est qu'une question de goût personnel.

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    Tout à fait d'accord avec la réponse de @Lolo

    je te propose juste en complément ton code avec la négation (enfin si j'ai bien compris)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	while (my $Ligne = <FIC_READ> ) 
    	{  	
    		#remplacement des espaces par des "-"
                             $Ligne =~ s/[\s]/\|/g;
     
    		if (grep { $Ligne !~ m/$_/g } @GestionLigneEnteteExclu)
    		{ 
    			print">>$Ligne\n" ; 	
    		}
    	}
    close (FIC_READ) ;

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/02/2009, 14h46
  2. Recupérer la ligne et la colonne d'une DBGrid
    Par kmaniche dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/01/2009, 11h20
  3. recupérer la ligne source d'un contextmenu dans un datagridview
    Par Finality dans le forum Windows Forms
    Réponses: 6
    Dernier message: 27/12/2008, 17h38
  4. Recupérer des lignes dans un fichier ou une variable
    Par vince2005 dans le forum Langage
    Réponses: 12
    Dernier message: 29/09/2006, 18h46
  5. recupérer plusieurs ligne d'un fichier
    Par vince2005 dans le forum Langage
    Réponses: 6
    Dernier message: 27/07/2006, 10h50

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