gilou Modérateur Modosaurus Rex | Tu peux voir perl comme du Awk survitaminé.
Si tu sais faire du SQL (> si j'aurais été bien plus à l'aise avec des where et des group by) tu peux apprendre le perl de base sans pb.
Un petit exemple qui va calculer la somme du traffic pour chaque page (identifiée par son IP et nom de page):
Code :
#!/usr/bin/perl # error-check flags use strict; use warnings; # Use readable built-in names use English qw( -no_match_vars ); my %traffic; # un hash qui va avoir pour clé une chaine concaténée de l'IP et du nom de page # et pour valeur (incrémentale), le traffic my $filename = 'logdata.txt'; # fichier des données ou j'ai mis les 4 lignes que tu as donné open(my $fh, '<', $filename) or die "$filename: fichier pas trouve!"; # ouverture en lecture while (<$fh> ) { # expression régulière de ta ligne de données if (/^ (\d+ )\ s+ (\d\d\/\d\d\/\d\d )\ s+ (\d\dh\d\d )\ s+ (\d+ )\ s+ (\S+ )\ s+ (\d+ )\ s+ (\d+\.\d+\.\d+\.\d+ )\ s*$/o ) { # maintenant tu as tes champs dans les variables $1, $2...$7 # a toi d'en faire usage $traffic{$7.' '.$5} += $6; # somme avec la valeur courante } } # maniere standard de parcourir un hash foreach my $key (keys %traffic) { print "IP and page: $key, traffic: $traffic{$key}\n"; }
|
C:\Perl>perl logdata.pl
IP and page: 10.120.111.9 index.php, traffic: 400
IP and page: 10.120.111.1 index.php, traffic: 670
IP and page: 10.129.111.1 test.php, traffic: 288 |
A+, Message édité par gilou le 05-10-2011 à 14:40:47 ---------------
There's more than what can be linked! -- Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
|