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 :

gestion des non erreurs dans un fichier


Sujet :

Langage 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 gestion des non erreurs dans un fichier
    Bonjour,

    Je souhaiterai réaliser un script qui m'ouvre un fichier dans le quel il y aurait différente ligne et ne récupérer que les lignes qui n'ont pas les mots suivants : erreur, error...

    Pour cela, j'avais pensé aux programme suivant :

    quel est la négation pour " =~ " ?


    open (FIC_READ, "<$Fichier") || die "Ouverture impossible du fichier $Fichier: $!";

    my @GestionLigneExclu=("erreur","error");

    while ($Ligne = <FIC_READ> )
    {
    if (grep { $Ligne =~ m/$_/g } @GestionLigneExclu)
    {
    print "traitement $Ligne \n";
    }
    else
    {
    print "erreur $Ligne \n";
    }


    }
    close (FIC_READ);

  2. #2
    Membre émérite Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Par défaut
    Salut,

    la négation pour ta regexp ( ne match pas ) est Cdlt.

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Par défaut
    j'ai mis cela :


    open (FIC_READ, "<$Fichier") || die "Ouverture impossible du fichier $Fichier: $!";

    my @GestionLigneExclu=("erreur","error");

    while ($Ligne = <FIC_READ> )
    {
    if (grep { $Ligne =~ m/$_/g } @GestionLigneExclu)
    {
    print "traitement $Ligne \n";
    }
    else
    {
    print "erreur $Ligne \n";
    }


    }
    close (FIC_READ);
    malgré cela, les lignes contenant le mot erreur apparaissement dans la premier condition "Traitement $Ligne".

    Merci pour votre aide

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Par défaut
    pardon , je voulais dire :

    open (FIC_READ, "<$Fichier") || die "Ouverture impossible du fichier $Fichier: $!";

    my @GestionLigneExclu=("erreur","error");

    while ($Ligne = <FIC_READ> )
    {
    if (grep { $Ligne !~ m/$_/g } @GestionLigneExclu)
    {
    print "traitement $Ligne \n";
    }
    else
    {
    print "erreur $Ligne \n";
    }


    }
    close (FIC_READ);

  5. #5
    Membre émérite Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Par défaut
    As tu essayer de printer dans ta boucle pour voir ce que ça donne comme ceci :

    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
    open (FIC_READ, "<$Fichier") || die "Ouverture impossible du fichier $Fichier: $!";
     
    my @GestionLigneExclu=("erreur","error");
     
    while ($Ligne = <FIC_READ> ) {
        if (grep { $Ligne !~ m/$_/g } @GestionLigneExclu){ 
            print "traitement $Ligne for : $_ \n";
    }
    else{
        print "erreur $Ligne \n";
    }
     
     
    } 
    close (FIC_READ);
    et puis la syntaxe utilisée j'avoue , j'en suis pas fan (passage de tableau à un grep comme ceci )

  6. #6
    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
    Suppose que $Ligne contienne: "erreur toto titi", avec @GestionLigneExclu=("erreur","error");

    Ton "grep { $Ligne !~ m/$_/g } @GestionLigneExclu) " va te renvoyer "error", puisque error n'est pas dans ta ligne. Du coup, en contexte scalaire, ce sera évalué à 1 (un élément retournée par le grep) et, par conséquent, le if considérera la condition comme étrant vraie.

Discussions similaires

  1. Récupérer des réels non NaN dans un fichier
    Par jyloup dans le forum Fortran
    Réponses: 8
    Dernier message: 05/12/2012, 08h31
  2. Configuration des erreur dans un fichier ini
    Par Jcpan dans le forum MVC
    Réponses: 10
    Dernier message: 22/09/2012, 00h55
  3. Dernière ligne non vide, dans un fichier contenant des plans.
    Par Faelucc dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/07/2010, 13h27
  4. Détection des erreurs dans un fichier texte (txt)
    Par M E H D I dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 25/05/2010, 10h14
  5. [C#] Comment serializer l'écriture des erreurs dans un fichier
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 9
    Dernier message: 17/11/2006, 14h54

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