Plop all,

Etant toujours sur mon script de log apache et iis (ça avance petit à petit lool), j'ai actuellement un problème au niveau de mes regexp.

Pour le moment avec seulement Apache, la regexp marche bien, même si elle n'est peut-être pas assez optimiser pour les erreurs.

Cependant quand je rajoute une regexp pour savoir si la ligne est une ligne iis, j'ai une petite erreur.

Voici le code des deux regexp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
my $APACHE  = q{(\S+)\s+\S*\s+\S*\s+\[(\d+)\/(\D+)\/(\d+):\d+:\d+:\d+\s+\+\d+\] \"(.*) (.*)\" (\S+) (\S+) \"(.*)\" \"(.*)\"};
my $IIS     = q{(\S+)\s+\S*\s+\S*\s+\[(\D+)\/(\d+)\/(d\+):\d+:\d+:\d+\s+\+\d+\] \"(.*) (.*)\" (\S+) (\S+) \"(.*)\" \"(.*)\"};
 
open (Fichier, "< $file") or die "Ne peux pas ouvrir le fichier $ARGV[0]\n";
while (my $ligne = <Fichier>){
 
($ip,$jour,$mois,$annee,$method,$page,$ret_code,$byte,$referer,$user_a) = $ligne =~ $APACHE
($ip,$mois,$jour,$annee,$method,$page,$ret_code,$byte,$referer,$user_a) = $ligne =~ $IIS;
 
...
J'ai juste fais une inversion pour le mois afin de tester. Du coup mes lignes de mon fichier ressemble à cela :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
190.90.90.90 - - [15/Feb/2009:19:45:42 +0100] "GET /index.php" 100 200 "http://www.developpez.com" "Mozilla/4.0 (compatible; MSIE 7.0; Windows)"
190.90.90.90 - - [Feb/15/2009:19:45:42 +0100] "GET /index.php" 100 200 "http://www.developpez.com" "Mozilla/4.0 (compatible; MSIE 7.0; Windows)"
Mes lignes apache seules fonctionnent, des que j'essaye avec iis = erreur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Use of uninitialized value $mois in string eq at C:\log.pl line 66, <Fichier> line 2.
C'est des erreurs juste après alors que $mois a bien été initialiser vu que si je met juste apache, ça fonctionne bien.

Je pense pas qu'il y ai besoin de condition pour la regexp, le double "=" doit suffire non ?

Je peux paster le code complet au besoin, je comprend pas pourquoi j'ai cette erreur.

Si vous avez une idée, merci à vous.

++