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 :

[PERL] Recherche d'une chaine de caractères


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 10
    Points
    10
    Par défaut [PERL] Recherche d'une chaine de caractères
    Bonjour,

    je suis débutante en perl et je cherche un script qui recherche une chaine de caractère, par exemple "TOTO" dans le fichier log le plus récent situé dans un répertoire windows précis.

    Pourriez-vous, svp, m'aider sur le sujet?

    merci !
    Clémentine

  2. #2
    Membre confirmé
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Je te suggère de jeter un oeil à la section de la FAQ consacrée à la gestion des fichiers en perl, tu devrais y trouver les réponses à l'essentiel de test interrogations.
    Tu devrais alors être capable de faire une tentative, et de nous poser des questions plus précises si tu as encore des problèmes.
    There's nothing like $HOME!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    avec le chemin de la log en dur, cela passe.
    avec la fonction "plus_recent", pas vraiment.
    Si qqun a une idée

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    use warnings;
    use strict;
    use File::Find;
     
    my ($recent,$nom,$rep);
    my $line;
     
    $rep = 'D:\\';
     
    # cherche le plus recent
     
    sub plus_recent {
            return unless -f;
            return if defined $recent and $recent > (stat($_))[9];
            $recent = (stat(_))[9];
            $nom = $File::Find::name;
    }
     
    find(\&plus_recent,$rep);
     
    print $nom;
     
    #open (LOG,"<D:\\log.log") || die ("Erreur d'ouverture de TOTO") ;
     
    open(LOG,"$nom")  ;
    my @LogFilePosition=<LOG>;
    close(LOG);
     
    foreach $line (@LogFilePosition) {
     
        if ($line =~ /CHAINERECHERCHEE/) {
     
            print "C'est démarré !!";
     
        }
     
    }

  4. #4
    Membre confirmé
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Je ne vois pas le problème, chez moi ça marche. Mais je ne suis pas sous Windows et j'ai dû remplacer le chemin du répertoire par un chemin valide de mon arborescence Linux. Peut-être le problème vient-il de là. Es-tu sûre que 'D:\\' est une façon valide d'indiquer un chemin à perl sous Windows ?

    En attendant, deux petites remarques :
    1) Je constate que tu as utilisé le handle spécial _ dans ton sous-programme plus_recent, ce qui est judicieux. Cependant, tu ne l'utilises que pour ton deuxième appel à stat. Tu pourrais aussi l'utiliser pour le premier, car le test -f a déjà généré les infos nécessaires pour que stat fonctionne avec _.
    2) Pour ce que tu veux faire, je ne suis pas certain qu'il soit très pertinent d'utiliser File::Find : tu n'as pas besoin d'une exploration en profondeur de l'arborescence, juste des fichiers ordinaires d'un unique répertoire. À moins que j'aie mal compris.
    There's nothing like $HOME!

  5. #5
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Je suis sous Windows, et voici comment j'indique mes chemins :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $file = "P:/Perl/scripts/Files/acc.txt";
    J'utilise des slash, mais je pense que des doubles slash fonctionnent également. Essaie avec "D:/".
    -- Jasmine --

Discussions similaires

  1. Recherche dans une chaine de caractères
    Par stepd dans le forum C
    Réponses: 4
    Dernier message: 19/07/2006, 18h55
  2. [VB]Recherche d'une chaine de caractère dans un fichier
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 26
    Dernier message: 16/02/2006, 09h10
  3. [VB.NET] Recherche dans une chaine de caractères
    Par Pleymo dans le forum Windows Forms
    Réponses: 12
    Dernier message: 09/04/2005, 10h25
  4. [String]Recherche d'une chaine de caractères dans une autre
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2004, 11h51
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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