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 :

Fonction while qui ne s'arrête pas


Sujet :

Langage Perl

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut Fonction while qui ne s'arrête pas
    Bonjour
    Voici un bout de code qui devrait s'arrêter quand la variable $inout prend la valeur TIMESTAMP.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $inout = $Fld[3];
        $s = ':', $inout =~ s/$s//g;
         while ( $inout ne 'TIMESTAMP' ) {
         next line; 
         }
    J'ai aussi essayer l'opérateur !eq à la place de ne sans succès.

    Merci de votre aide

  2. #2
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Utilises-tu pragmas strict et warnings ? Probablement non.

    Tu as une virgule en ligne 2 à la place d'un point-virgule.

    D'autre part et plus important tu boucles sur une condition mais la variable ne change pas dans la boucle : donc soit tu n'y entres jamais, soit tu n'en sort jamais.

    Dis-nous ce que tu veux faire et montre un peu plus de code.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    Merci de ta réponse Iblis,

    Mon script fais 900 lignes, et agis sur un fichier log. Je te donnes les 50 lignes que me donne du fil à retordre avec les explications à la fin :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    line: while ( <INCLUDE1_FILE> ) {
        chop;
        @Fld = split( ' ', $_, 9999 );
     
        # lines we can ignore ???
        if ( scalar( @Fld )	< 4 ) { # ignore these
    	next line;
        }
     
     
        # extract time from input line 
        $timestamp = $Fld[1];
        # keep track of the last time found
        $timestampN = $timestamp;
        # convert time to seconds
     
        $inout = $Fld[3];
        $s = ':' ; $inout =~ s/$s//g;
        # first timestamp found in the log file ???
        if ($datestamp eq '??-???-????') {
    	# initial timestamp found
    	# re-format into an unambigous date format
     
    	$s = "\\(", $Fld[$#Fld] =~ s/$s//g;
    	$s = "\\)", $Fld[$#Fld] =~ s/$s//g;
    	@date = split(/\//, $Fld[$#Fld], 9999);
    	@date = split(/\//, $Fld[$#Fld], 9999);
    	$M = $date[1]++;
    	$datestamp = $date[2] . '-';
    	$datestamp = $datestamp . $month[$M];
    	$datestamp = $datestamp . '-';
    	$datestamp = $datestamp . $date[3];
    	#datestamp = date[2] "-" month[m] "-" date[3] ;
     
    	# initialise the first/last date/timestamps found
    	$datestamp1 = $datestamp;
    	$datestampN = $datestamp;
    	$timestamp1 = $timestamp;
    	#
     
    	$date[1]-- ;
    	#Debug
    	#print $date[2],  $date[1], $date[3] ;
    	$dayOfTheWeek = Date_DayOfWeek( $date[1], $date[2], $date[3],);
            $dayStamp = $day[ $dayOfTheWeek];
     
    	# skip processing this line further
    	next line;
        }
    Quand la première ligne de mon fichier INCLUDE1_FILE log contient TIMESTAMP, je n'ai aucun problème la variable $dayStamp change et prend le jour de la semaine correspondant à la date du TIMESTAMP.
    Quand mon fichier de log commence par une autre ligne qu'avec TIMESTAMP, la variable $dayStamp ne s'initialise pas et garde la valeur ??-???-????, ce qui plante le reste du script. Le traitement ne se fait pas.
    C'est pour cela que je veux récupérer la valeur TIMESTAMP dans $inout, voir que le traitement commence au premier TIMESTAMP rencontré.

    Voici un exemple de la ligne qui contient TIMESTAMP :
    17:19:19 (lmgrd) TIMESTAMP 1/1/2009
    TIMESTAMP est bien dans la colone 3 du tableau @Fld

  4. #4
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Le bout de script que tu montres ne fait pas exactement ce que tu dis.

    Le script parse chaque ligne en champs séparés par des espaces et attends une donnée "timestamp" sur le champs d'indice 1 (le second donc) et une donnée "inout" (dont il nettoie les sur le champ d'indice 3.

    La ligne type que tu montres ne correspond pas à cela.

    Ensuite il effectue un traitement sur $datestamp, si celui-ci vaut '??-???-????' ; mais on ne voit pas d'où vient $datestamp.

    De même on ne voit pas où le script teste la présence de TIMESTAMP sur le champ d'indice 2.

    Si j'étais toi je lancerai le script dans le debugger avec des points de break pour contrôler les valeurs des variables et ce qui est vraiment parser (ou, je mettrais des print un peu partout pour faire la même chose, mais c'est moins efficace).

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    Iblis,

    C'est bien là le soucis .....

    La variable $datestamp est initialisée comme ceci et c'est la seule ligne en amont
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $datestamp="??-??-????"
    Il faut donc que je trouve le déclencheur, qui doit dépendre de la valeur de $inout. Car quand la log commence avec la ligne qui contient TIMESTAMP je n'ai aucun problème.

    C'est pour cela que je cherche un moyen simple pour que le traitement commence quand inout prend la première valeur TIMESTAMP

    J'avais enlevé les print dans mon post pour que ce soit moins indigeste. J'ai donc observé que $inout ne prend jamais la valeur TIMESTAMP sauf quand la log commence par une ligne qui contient TIMESTAMP d'ou l'idée du while sur $inout


    Je ne comprend pas bien ceci : $Fld[$#Fld] qui est dans la ligne suivante : $s = "\\(", $Fld[$#Fld] =~ s/$s//g;
    Je sais que c'est la mise en forme par substitution mais le caractère diese me gêne

    Merci de votre aide

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par dubis Voir le message
    Je ne comprend pas bien ceci : $Fld[$#Fld] qui est dans la ligne suivante : $s = "\\(", $Fld[$#Fld] =~ s/$s//g;
    Je sais que c'est la mise en forme par substitution mais le caractère diese me gêne
    $#tableau donne l'indice du dernier élément de @tableau.
    donc $Fld[$#Fld] est équivalent à $Fld[-1], c'est à dire le dernier élément de @Fld.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Voici un exemple de la ligne qui contient TIMESTAMP :
    17:19:19 (lmgrd) TIMESTAMP 1/1/2009
    TIMESTAMP est bien dans la colone 3 du scalaire @Fld
    @Fld n'est pas un scalaire, c'est un tableau. Mais surtout pour accéder à la 3eme colonne, il faut utiliser $Fld[2] car les indices commençent à 0 et non à 1.

    J'ai l'impression que dans ton script les accès au tableau sont décalés, exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        # extract time from input line 
        $timestamp = $Fld[1];
    Cette affectation va mettre dans la variable $timestamp la 2eme colonne de tes données et pas la 1ere. D'après la ligne d'exemple ce serait la plutôt 1ere qu'on veut ici (il me semble en tout cas), c'est-à-dire $Fld[0].

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    Merci pour les explications ....

    Estofilo,

    J'ai inséré un print
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "timestampN : $timestampN";
    j'ai bien la bonne valeur .... timestampN : 17:19:19

    Si j'insére J'ai bien le TIMESTAMP en colone 3. Donc pas de décalage. Ceci dans le cas ou la première ligne contient TIMESTAMP. Sinon j'ai une autre valeur qui correspond bien à la colonnes 3, quand la log commence par une autre ligne lambda. J'évite ce bug en faisant commencer ma log par un TIMESTAMP. Ce qui demande un traitement supplémentaire.

    Ce que j'aimerai bien c'est que le script considère TIMESTAMP comme point de départ .....


    Je ressoumet mon script car ce n'était pas bien fait la première fois, en effet le TIMESTAMP est traité après la partie que j'avais posté ....
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    line: while ( <INCLUDE1_FILE> ) {
     
        chop;
        @Fld = split( ' ', $_, 9999 );
     
        # lines we can ignore ???
        #if ( scalar( @Fld ) < 4 ) { # ignore these
        #next line;
        #}
     
        # extract time from input line 
        $timestamp = $Fld[1];
        # keep track of the last time found
        $timestampN = $timestamp;
        # convert time to seconds
     
     
        #  
        $inout = $Fld[3];
        $s = ':', $inout =~ s/$s//g;
     
     
        # first timestamp found in the log file ???
        if ($datestamp eq '??-???-????') {
    	# initial timestamp found
    	# re-format into an unambigous date format
    	$s = "\\(", $Fld[$#Fld] =~ s/$s//g;
    	$s = "\\)", $Fld[$#Fld] =~ s/$s//g;
    	@date = split(/\//, $Fld[$#Fld], 9999);
    	$M = $date[1]++;
     
    	$datestamp = $date[2] . '-';
    	$datestamp = $datestamp . $month[$M];
    	$datestamp = $datestamp . '-';
    	$datestamp = $datestamp . $date[3];
    	#datestamp = date[2] "-" month[m] "-" date[3] ;
    	# initialise the first/last date/timestamps found
    	$datestamp1 = $datestamp;
    	$datestampN = $datestamp;
    	$timestamp1 = $timestamp;
    	#
     
    	$date[1]-- ;
    	#Debug
    	#print $date[2],  $date[1], $date[3] ;
    	$dayOfTheWeek = Date_DayOfWeek( $date[1], $date[2], $date[3],);
            $dayStamp = $day[ $dayOfTheWeek];
    	#print "Daystamp 262 : $dayStamp";
    	# skip processing this line further
    	next line;
        }
     
        # any normal timestamp ???
        if ($inout eq 'TIMESTAMP') {
    	# re-format into an unambigous date format
    	@date = split(/\//, $Fld[4], 9999);
    	$M = $date[1]++;
    	#
    	$datestamp = $date[2] . '-';
    	$datestamp = $datestamp . $month[$M];
    	$datestamp = $datestamp . '-';
    	$datestamp = $datestamp . $date[3];
    	# set the last datestamps found
    	$datestampN = $datestamp;
    	#
    	# first time/date stamp not yet set?
    	if ($datestamp1 eq '??-???-????') {
    	    $datestamp1 = $datestamp;
    	}
    	if ($timestamp1 eq '??:??:??') {
    	    $timestamp1 = $timestamp;
    	}
    	#
    	# get the day of the week
    	$date[1]-- ;
    	$dayOfTheWeek = Date_DayOfWeek( $date[1], $date[2], $date[3]);
            $dayStamp = $day[ $dayOfTheWeek] ;
    	# skip processing this line further
    	next line;
        }
    merci de votre aide

  9. #9
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Etrange... pourrais-tu mettre en pièce jointe quelques lignes du fichier d'entrée ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    Je pense que c'est bon .........
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt LOG.txt (63,0 Ko, 1841 affichages)

  11. #11
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Le premier caractère de chaque ligne contient un espace (le séparateur de colonne). Donc en utilisant un split de la forme
    l'indice 0 du tableau devrait être vide et la première colonne serait alors effectivement à l'indice 1.

    Cependant, tu as utilisé la forme spéciale de split :
    qui élimine les "leading whitespaces" (voir doc http://perldoc.perl.org/functions/split.html), ce qui fait que la première colonne devrait se trouvé à l'indice 0 et pas à l'indice 1 comme tu sembles le dire.
    Es-tu bien sûr de l'écriture de ton split dans ton source ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    j'ai bien la bonne valeur .... timestampN : 17:19:19
    Et pourtant non. Voici un programme de 3 lignes que tu peux exécuter tout seul et qui montre le problème en récupérant exactement ton code, et exactement ta ligne de données.
    $Fld[1] contient (lmgrd) et pas 17:19:19

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      my $exemple = "17:19:19 (lmgrd) TIMESTAMP 1/1/2009";
      my @Fld = split( ' ', $exemple, 9999 );
      print $Fld[1], "\n";

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Le premier caractère de chaque ligne contient un espace (le séparateur de colonne)
    Oui mais apparemment uniquement lorsque le premier nombre tient sur un seul chiffre. Quand il y a 2 chiffres, il n'y a pas d'espace en tête.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    En bash shell pour trouver mon premier TIMESTAMP je fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -n TIMESTAMP FIle.log | tail -1
    Donc si je veux que ma log commence par un TIMESTAMP je dois créer un nouveau fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    in=FIle.log; tail -`echo $(($(cat $in | wc -l) - $(cat $in | grep -n TIMESTAMP | head -1 | awk -F: '{print $1}' ) +1 ))` $in > newFile.log
    Ensuite mon script fonctionne sur newFile.log car il rencontre le TIMESTAMP et initialise la date.

    Je n'arrive pas à le faire sous perl pour eviter de créer un nouveau fichier dont l'original est déjà important.

  15. #15
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Citation Envoyé par dubis Voir le message
    En bash shell pour trouver mon premier TIMESTAMP je fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -n TIMESTAMP FIle.log | tail -1
    Alors pourquoi pas un match ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while (<FILE>) {
    /^\s*(\d{1,2}:\d{2}:\d{2})\s.*\sTIMESTAMP\s(.*)$/;
    my $timestampN = $1;
    my $inout = $2; #pas trop fait gaffe au nom de la variable d'origine
    [...]
    }
    à tester et corriger bien sûr, mais sur le principe ca devrait repondre au pb non ?

    @+
    Mr6

  16. #16
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Je trouve qu'il est toujours préférable, quand c'est possible, d'affecter directement les variables avec les extractions d'une expression régulière, sans passer par les variables à effet de bord $1, $2. Ceci évite, en cas de maintenance ou de modification du script, que ces variables ne soient modifiées entre l'expression régulière et leur utilisation, par exemple par l'utilisation d'une autre expression régulière (comme dans un test par exemple).
    Ainsi, les trois lignes de Mr6 se transforment en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my ($timestampN, $inout) = /^\s*(\d{1,2}:\d{2}:\d{2})\s.*\sTIMESTAMP\s(.*)$/;
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  17. #17
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Je vais pouvoir optimiser qq bouts de codes moi, j'avais pas croisé cette notation (faut dire que je m'intéresse depuis trop peu de temps aux regex).
    On pourrait pousser le code jusqu'à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my %hash = map { my ($timestampN, $inout) = /^\s*(\d{1,2}:\d{2}:\d{2})\s.*\sTIMESTAMP\s(.*)\s*$/; $timestampN => $inout } <FILE>;
    @+
    Mr6

  18. #18
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Si tu souhaites pousser le code , tu peux encore alléger l'écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my %hash = map { /^\s*(\d{1,2}:\d{2}:\d{2})\s.*\sTIMESTAMP\s(.*)\s*$/; } <FILE>;
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  19. #19
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Oui, mais comme tu l'as dit, il faut eviter les effets de bord

    @+
    Mr6

  20. #20
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Il n'y a pas d'effet de bord... le résultat des extractions de l'expression régulière sont localement et immédiatement retourné par le corps du map.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

Discussions similaires

  1. Crash et dépassement de capacité.
    Par Invité dans le forum Langage
    Réponses: 25
    Dernier message: 09/07/2015, 16h22
  2. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17
  3. [MS SERVER 2K]Fonction crée qui ne s'éxécute pas
    Par Filippo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/07/2006, 12h03
  4. [FLASH MX2004] Clip qui ne s'arrête pas
    Par romain starck dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 10/05/2006, 19h43
  5. [VBA-E]une boucle qui ne s'arrète pas
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/02/2006, 18h05

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