[PERL]- Extraire lignes à partir de la n ième

blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

j'ai un fichier dont toutes les lignes sont horodatées (aammjj-hhmmss) :

070522-111819>
070522-111819> Start time: Tue May 22 11:17:26 2007
070522-111819> End time: Tue May 22 11:18:19 2007
070522-111819>
070522-111819>
070522-111819> --- Never Started Save Sets ---

Et je cherche une méthode en perl pour extraire toutes les lignes qui sont postérieures à une date et une heure donnée pour les traiter, dans le but de gagner en vitesse de traitement (mon fichier est un log de plusieurs centaines de milliers de lignes...)

Quelqu'un aurait quelque chose à me proposer ?

Merci d'avance.

--
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

19 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    je vais voir ça ce soir.
    en revanche j'aimerais bien que tu affiche quelques lignes pour avoir la structure correcte

    merci
    0
  2. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    L'exemple ne suffit pas ?

    Je rajoute moi-même à l'écriture du fichier la date et l'heure et un >

    Il est possible que plusieurs lignes aient la même heure (et la même date d'ailleurs) et les lignes peuvent être TRES longues (>1000 car)

    070519-011115> NetWorker savegroup: (notice) G-PLANETE completed, Total 4 client(s), 4 Succeeded. Please see group completion details for more information.
    070519-011115>
    070519-011115> Succeeded: mars, jupiter, io, neptune
    070519-011115>
    070519-011115> Start time: Fri May 18 21:30:00 2007
    070519-011115> End time: Sat May 19 01:11:14 2007
    070519-011115>
    070519-011115>
    070519-011115> --- Successful Save Sets ---
    070519-011115>
    070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files
    070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files
    070519-011115> mars: /app/fai03 level=incr, 0 KB 00:00:05 0 files
    070519-011115> mars: /app/v1i03 level=incr, 0 KB 00:00:05 0 files
    070519-011115> mars: /app/w1i03 level=incr, 11 KB 00:00:05 5 files
    070519-011115> mars: /svg/hai03 level=incr, 0 KB 00:00:03 0 files
    070519-011115> mars: /fic/hai03 level=incr, 0 KB 00:00:03 0 files
    070519-011115> mars: /log/hai03 level=incr, 0 KB 00:00:03 0 files
    070519-011115> mars: /app/hai03 level=incr, 0 KB 00:00:04 0 files
    070519-011115> mars: /svg/eni03 level=incr, 0 KB 00:00:04 0 files
    070519-011115> mars: /fic/eni03 level=incr, 0 KB 00:00:06 0 files
    070519-011115> mars: /log/eni03 level=incr, 0 KB 00:00:02 0 files
    070519-011115> mars: /app/eni03 level=incr, 0 KB 00:00:03 0 files
    070519-011115> mars: /log/x2i03 level=incr, 0 KB 00:00:04 0 files
    070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files
    070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files
    070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files
    070519-011116> mars: /fic/svi03 level=incr, 0 KB 00:00:06 0 files
    070519-011116> mars: /log/svi03 level=incr, 0 KB 00:00:02 0 files
    070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files
    070519-011116> mars: /svg/mitci03 level=incr, 0 KB 00:00:03 0 files
    070519-011116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files
    070519-011116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files
    070519-011116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 files
    070519-011116> mars: /svg/cii03 level=incr, 0 KB 00:00:06 0 files
    070519-011116> mars: /log/cii03 level=incr, 0 KB 00:00:03 0 files
    070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    L'exemple ne suffit pas ?
    Oui, j'ai lu en diagonale :-))

    Avant de partir du boulot voilà une piste (je n'ai pas testé)

    En supposant que le fichier est trié par date tu peux lire à partir d'une certaine date de cette façon

    open LIRE,"tonfichier" or die "E/S : $!\n";
    open ECRIRE, ">resultat" or die "E/S : $!\n";
    
    $date='ta_date';
    $heure='heure';
    while(<LIRE>){
      print ECRIRE if /${date}-$heure/ ..  eof;
    }
    --
    lami20j
    0
    1. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Merci ça marche...

      Je n'ai pas compris pourquoi d'ailleurs !

      C'est les .. ?
      0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    je suis au boulot et je n'ai pas trop de temps.
    semble-t-il que les opérateurs .. et ... sont un peu plus difficile à comprendre
    je vais essayer ce soir de t'expliquer un peut le comportement de ces 2 opérateurs, bien sûr si ça t'interesse
    0
    1. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Avec grand plaisir ! ;-)
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Les opérateurs .. et ... peuvent être utilisés avec des regex ou avec des numéros de lignes.

    L'opérateur .. renvoie VRAI si les 2 tests sont VRAI sur la même lignes, en revanche ... ne le fait pas.

    Dans l'expression DEBUT .. FIN la valeur FAUX est renvoyé sans arrêt si DEBUT n'est pas vérifié.
    Une fois DEBUT verifié, il n'est plus vérifié et la valeur VRAI est retournée jusqu'à quand FIN est vérifié.
    Quand FIN est vérifié, le cycle recommence.

    Pour voir la différence entre .. et ... je vais te donner un exemple

    Pour ..
    #!/usr/bin/perl
    while(<DATA>){
        print if /DEBUT/ .. /FIN/;
    }
    __END__
    DEBUT de la chaine, jusqu'à la FIN
    comprendre les opérateurs .. et ...
    FIN
    Le résultat est
    DEBUT de la chaine, jusqu'à la FIN

    Pour ...
    #!/usr/bin/perl
    while(<DATA>){
        print if /DEBUT/ ... /FIN/;
    }
    __END__
    DEBUT de la chaine, jusqu'à la FIN
    comprendre les opérateurs .. et ...
    FIN
    Le résultat est
    DEBUT de la chaine, jusqu'à la FIN
    comprendre les opérateurs .. et ...
    FIN


    L'opérateur .. teste les deux conditions sur la même ligne, donc si le test est vérifié alors il retourne VRAI jusqu'à quand il FIN est vérifié, et il s'arrête. Le cycle ne recommence plus puisque DEBUT n'est plus vérifié.
    L'opérateur ... va continue jusqu'à la prochaine ligne qui contient FIN. L'opérateur ... ne teste pas les conditions dans le même temps.

    Un autre comportement spécial c'est dans le cas d'utilisation de numéro de ligne au lieu des regex.

    On ne peux pas écrire
    $debut = 10;
    $fin = 100;
    print if $debut .. $fin;


    On peut écrire
    print if 1..10;
    ou
    $debut = 10;
    $fin = 100;
    print if $. == $debut .. $. == $fin;

    0
    1. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Je vais voir tout ça...

      http://ww3.ac-creteil.fr/sciences-ecole/spip/article.php3?id_article=10

      ;-)
      0
    2. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      J'ai pas compris où est le test, je ne vois nulle part l'endroit où on dit commence par date-heure...

      Parce que $, c'est pour dire variable, non ?
      0
  7. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Parce que $, c'est pour dire variable, non ?
    Plus précis, scalaire en Perl.

    Oui, puisque l'opérateur m// permet l'interpolation des variables.

    Je vais essayer de donner une explication un peu moins obscure.

    Prenons le fragment et je veux obtenir seulement le paragraphe entre DEBUT et FIN
    Je suis obligé d'utilser ... puisque .. fait le teste sur la même ligne
    (ne demande pas pourquoi, puisque sinon je te demanderai pourquoi avec + j'obtiens 1 + 1 = 0 et avec - j'obtiens 1 - 1 = 0)
    C'est tout simplement un opérateur qui a été conçu pour ça :-))

    ......
    zzzzzzzzzzz
    DEBUT aaaaaaaaaaa FIN
    gdsdfsdf
    dsfsdf
    FIN
    zzzzzzzzzzz
    ............

    En fait l'opérateur ... travaille de la façon suivante

    Il cherche DEBUT, une fois qu'il le trouve il ne le cherche plus et renvoie VRAI en testant toujours si FIN existe ou pas

    Une fois qu'il a trouvé FIN il s'arrête et le cycle recommence (c'est pratique quand on a plusieurs paragraphes situés entre DEBUT et FIN)

    Dans ton cas j'ai utiliser la fonction eof pour obtenir tout entre le 1er DEBUT rencontré (en fin tes dates) jusqu'à la fin de fichier.

    C'est plus clair maintenant?
    0
    1. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Voui, mais ça confine à la magie :-)
      0
  8. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    J'ai quand même un souci : si la forme recherchée n'existe pas, alors on ne recopie rien...

    Vu que c'est une date et une heure, je voudrais recopier si c'est 'supérieur à ', or il est possible que je n'ai pas de ligne dans le fichier pour une heure donnée...

    Tu as une idée ?
    0
  9. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    bien sûr que je pourrais avoir une idée, mais dans des cas particuliers comme celui là il faut avoir la structure de fichier et aussi ce que je cherche avec l'exactitude

    à savoir aussi (j'ai remarqué que pour une date et heure il ya plusieurs lignes) qu'il faut savoir exactement ce qu'on cherche

    si jamais une ligne sans date et heure se trouve dans le DEBUT et FIN alors sache qu'elle sera pris en compte même si on ne veut pas

    Pour corriger ça on peut utiliser next pour que le script saute les lignes qui ne commencent pas avec date et heure

    Tu vois qu'il y a plusieurs situations qu'on doit prendre en compte.

    En bref je pourrais repondre à tes questions si tu me dit décrit avec précison les cas concrets.

    En ce qui concerne l'histoire de supériour à on peut le faire, en utilisant des regex et pas des comparaisons

    par exemple pour chercher tout les numéros qui sont plus grandes que 24 on peut faire

    1. avec comparaison
    on pout comparer directement avec >= 24 par exemple

    2. avec regex

    on ne pense pas à une comparaison mais à une corespondace des caractères

    je m'explique

    si je cherche tout les données plus grandes que 24 ça veut dire que le 1er caractère soit il va être 2 et je l'associe avec la classe [4-9] pour le 2ème caractère
    soit le 1er caractère je vais le charcher dans la classe [3-9] et pour le 2ème séra la classe [0-9]
    il nous reste à chercher avec le motif /2[4-9]|[3-9][0-9]/ qui vas envoyer toujours vrai pour
    24
    25
    .
    .
    29
    34
    .
    .
    99

    a toi :-))
    0
  10. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    TOUTES les lignes commencent par aammjj-hhmmss.

    Mais vu que c'est un fichier log, il y a des cas où l'on écrit pas pendant de longues périodes.

    Je veux pouvoir sélectionner toutes les lignes postérieures (ou égales) à une heure donnée, même s'il n'y a pas d'entrées pour cette heure :

    070531-061212
    070531-061312
    070531-061412
    070531-061512
    070531-081212
    070531-091212

    Ici, je voudrais avoir la possibilité de sélectionner tout ce qui vient après 7h00, même si aucune ligne n'existe pour 7h...

    S'il le faut je peux changer l'horodatage (c'est moi qui le gère) pour supprimer le '-' et faire de la date et heure un nombre entier strictement croissant...

    Ca t'aidrait ?
    0
  11. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Pas besoin de supprimer le -, je peux le sauter avec la regex
    Je vais voir ce soir.
    0
  12. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    voici une possibilité
    #!/usr/bin/perl
    use strict;use warnings;
    print "Entrez la date et heure de debut, format yymmddhhmmss [par défaut 070519011112] : ";
    chomp(my $lim = <STDIN>);
    $lim ||= '070519011112';
    
    while (<DATA>){
        /^(\d+)-(\d+)\D/;
        print if ($1 . $2) >= $lim;
    }
    __END__
    070510-011110> NetWorker savegroup: (notice) G-PLANETE completed
    070510-011110>
    070510-011110> Succeeded: mars, jupiter, io, neptune
    070510-011110>
    070510-011110> Start time: Fri May 18 21:30:00 2007
    070510-011110> End time: Sat May 19 01:11:14 2007
    070510-011110>
    070510-011110>
    070510-011110> --- Successful Save Sets ---
    070519-011115> --- LIMITE
    070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files
    070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files
    070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files
    070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files
    070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files
    070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files
    070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files
    070531-061312
    070531-061412
    070531-061512
    070531-081212
    070531-091212
    070531-091116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files
    070531-091116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files
    070532-061116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 files
    
    Le résultat

    La comparaison je la fait par rapport à la date et heure 070519011112 qui n'existe pas
    lami20j@debian:~$ perl ccm.pl
    Entrez la date et heure de debut, format yymmddhhmmss [par défaut 070519011112] :
    070519-011115> --- LIMITE
    070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files
    070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files
    070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files
    070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files
    070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files
    070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files
    070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files
    070531-061312
    070531-061412
    070531-061512
    070531-081212
    070531-091212
    070531-091116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files
    070531-091116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files
    070532-061116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 files
    
    0
    1. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Ca va mieux comme ça...

      Et si je ne veux tester que l'heure, ça ne marche pas avec ça :

      /^(\d+)-(\d{2})/;

      J'ai loupé quoi ?
      0
  13. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    si tu ne veux tester que l'heure il faut sauter la date et le tiret et ne pas les capturer non plus
    while (<DATA>){
        /^.{7}(\d+)\D/;
        print if $1  >= $lim;
    }
    Je n'ai pas testé, je suis au boulot

    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Je n'ai pas testé, je suis au boulot
      Quelle idée aussi !?
      Rentre immédiatement chez toi pour tester tes dires !!! NoméO des fois !

      ;-DDD

      Bonne journée.
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Rentre immédiatement chez toi

        j'en ai marre de RATP

        dès que j'ai vu ton message je suis parti, mais avec le trafic je viens d'arrivé.
        désolé pour ce retard :-DD
        la prochain fois je vais prendre le TGV :-))
        0
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        ;-))
        0
    2. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Pardon, je me suis mal exprimé, je voulais dire : tester la date et uniquement l'heure (pas les minutes secondes...)
      0
  14. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Essaie
    /^(\d{6})-(\d\d)/;
    print if ($1 . $2) >= $lim;
    sinon tu peux aussi faire avec unpack
    ($t) = unpack("A6 x1 A2",$_);
    print if $t >= $lim;
    toujours pas de test :-)
    0
  15. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Et si je ne veux tester que l'heure, ça ne marche pas avec ça :

    /^(\d+)-(\d{2})/;

    J'ai loupé quoi ?


    ça marche ta regex

    lami20j@debian:~/trash$ cat ccm.pl
    #!/usr/bin/perl
    use strict;use warnings;
    print "Entrez la date et heure de debut, format yymmddhh [par défaut 07051901] : ";
    chomp(my $lim = <STDIN>);
    $lim ||= '070519011112';
    
    while (<DATA>){
        /^(\d+)-(\d{2})/;
        print if ($1 . $2) >= $lim;
    }
    __END__
    070510-011110> NetWorker savegroup: (notice) G-PLANETE completed
    070510-011110>
    070510-011110> Succeeded: mars, jupiter, io, neptune
    070510-011110>
    070510-011110> Start time: Fri May 18 21:30:00 2007
    070510-011110> End time: Sat May 19 01:11:14 2007
    070510-011110>
    070510-011110>
    070510-011110> --- Successful Save Sets ---
    070519-011115> --- LIMITE
    070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files
    070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files
    070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files
    070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files
    070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files
    070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files
    070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files
    070531-061312
    070531-061412
    070531-061512
    070531-081212
    070531-091212
    070531-091116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files
    070531-091116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files
    070532-061116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 files
    lami20j@debian:~/trash$ perl ccm.pl
    Entrez la date et heure de debut, format yymmddhh [par défaut 07051901] : 07051901
    070519-011115> --- LIMITE
    070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files
    070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files
    070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files
    070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files
    070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files
    070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files
    070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files
    070531-061312
    070531-061412
    070531-061512
    070531-081212
    070531-091212
    070531-091116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files
    070531-091116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files
    070532-061116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 files
    lami20j@debian:~/trash$
    
    0
  16. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Ben la première fois, ça n'a pas marché, alors...
    0
  17. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    alors, c'est bon pour toi?! :-))
    0
  18. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Oui, ça a remarché, mais entre temps, j'avais mis \d\d...

    Pendant que j'y suis, tu aurais des références de littérature ou de sites sur les fameuses regexp ? (à part google...)
    0
  19. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    tu aurais des références de littérature

    Voilà ce que j'utilise Maîtrise des expressions régulières

    Avec ce livre tu n'as pas besoin d'autre chose :-))
    Si tu tiens vraiment à maitriser les regex je te le recommande chaleureusement.
    0
    1. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Merci, je vais voir ce qu'il en retourne...
      0
  20. wam
     
    0
    1. blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Yes, but in French it'd be better...
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > blux Messages postés 2048 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Salut,

        on est sur un site francophone, ne m'oblige pas d'alerter un modo ;-DD
        et je pense que tu connais celui là ;-) http://perl.mines-albi.fr/DocFr/perlretut.html
        0