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 :

[langage] [PERL] prendre des infos dans un fichier log


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 6
    Points : 3
    Points
    3
    Par défaut [langage] [PERL] prendre des infos dans un fichier log
    Bonjour à tous,

    Je voudrais connaitre le nombre de fois que l'adresse IP
    192.10.10.20 apparait dans mon fichier test.log

    voici la structure du fichier test.log

    DATE:@IP:adresse_site

    J'ai essayé le code suivant :

    #!/usr/bin/perl
    my $numero=0;
    open (test,"test.log")||die("Impossible d/'ouvrir fichier");
    $ligne = <test>;

    while (<test>) {

    @tableau=split(/:/,$ligne);

    if ($tableau[1] = "192.10.10.20") {
    $numero=$numero+1;

    }
    $ligne = <test>;
    }
    print ("$numero\n");
    close(test);


    la variable $numero est le nombre de fois qu'il rencontre l'@IP 192.10.10.20, mais ca ne fonctionne pas, je me retrouve avec le nombre de ligne du fichier test.log stockée dans la variable $numero, comme vous le voyez je debute en Perl




    Merci de votre aide

    Osiris73

  2. #2
    Membre actif Avatar de Gamdwin
    Inscrit en
    Avril 2005
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 186
    Points : 207
    Points
    207
    Par défaut
    Je me permets de corriger ton code :

    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
    38
    #!/usr/bin/perl
     
    # Permet d'écrire un code plus propre et plus sûr
    use strict;
     
    my $numero=0;
     
    # La norme veut que les descripteurs de fichier soient en majuscules.
    # C'est pas obligatoire, mais c'est la norme. 
    # De même, il est fortement conseillé d'éviter les mots qui peuvent
    # exister dans le langage, comme... test, par exemple. Simple mesure de sécurité
    open (LOGFILE, "test.log") || die "Impossible d'ouvrir fichier";
     
    # Tu n'est pas obligé de faire comme ça. En effectuant le while ( <DESCRIPTEUR>),
    # tu charges automatiquement chaque ligne lue dans $_
    # $ligne = <test>;
     
    while ( <LOGFILE> ) 
    {
       # Sans paramètre, split() va découper $_, qui contient justement les lignes
       # de notre fichier.
       # De plus, avec le use strict, nous sommes désormais obligé de déclarer @tableau
       my @tableau = split /:/;
     
       # En PERL, on teste l'égalité numérique avec ==, et alphanumérique avec -eq
       # En revance, ton test initial teste que... l'affectation fonctionne ! 
       # Ce qui n'est évidemment pas ce que tu souhaites
       # if ( $tableau[1] = "192.10.10.20") {
       if ( $tableau[1] -eq "192.10.10.20" )
       {
          # Comme en C, on peut préférer écrirer : $numero++;
          # Mais c'est pas obligatoire.
          $numero=$numero+1;
       }
    }
     
    print "$numero\n";
    close(LOGFILE);

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Et bien merci Gamdwin,

    merci egalement pour tes explications

    Tu viens de m'enlever des longues heures de debogages !!!

    encore merci


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

Discussions similaires

  1. [Encodage] Un classique : prendre des éléments dans un fichier texte
    Par DkA59 dans le forum Langage
    Réponses: 13
    Dernier message: 02/04/2011, 15h17
  2. Réponses: 1
    Dernier message: 11/11/2010, 15h41
  3. [XL-2003] Macro permettant de recupérer des infos dans un fichier .txt externe
    Par EsKa68 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/08/2010, 11h09
  4. Réponses: 8
    Dernier message: 23/04/2008, 20h56
  5. Ajouter des lignes dans un fichier *.log
    Par Fred2209 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/12/2006, 15h15

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