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

Signaler
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
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.

19 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
Salut,

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

merci
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
Merci ça marche...

Je n'ai pas compris pourquoi d'ailleurs !

C'est les .. ?
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
Avec grand plaisir ! ;-)
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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;

Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
Je vais voir tout ça...

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

;-)
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
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 ?
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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?
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
Voui, mais ça confine à la magie :-)
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
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 ?
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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 :-))
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
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 ?
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
Pas besoin de supprimer le -, je peux le sauter avec la regex
Je vais voir ce soir.
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
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 ?
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 872
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.
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

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 :-))
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 872 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

;-))
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
Pardon, je me suis mal exprimé, je voulais dire : tester la date et uniquement l'heure (pas les minutes secondes...)
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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 :-)
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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$
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
Ben la première fois, ça n'a pas marché, alors...
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
alors, c'est bon pour toi?! :-))
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
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...)
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
Merci, je vais voir ce qu'il en retourne...
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
Yes, but in French it'd be better...
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544 >
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020

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