AIDE codage, problème de syntaxe, tableau associatif.
1 réponse
NoSpam
Bonjour à tous,
Je dois produire des statistiques à partir de différents fichiers de logs
produits par un proxy. Le programme de statistique lit son entrée standard
et cumule les données dans des tableaux avant de les afficher.
Suivant le type de logs et parfois suivants les versions logiciels, les
fichiers de logs utilisent des champs communs mais dans un ordre qui peut
varier. Heureusement chaque fichier de logs dispose d'un premier
enregistrement qui décrit l'agencement des champs. Supposons que l'on puisse
récupérer cette agencement dans la variable $fields.
Pour illustrer :
Le fichier de logs HTTP du 10/05/2005 utilise les champs dans l'ordre
suivant:
$fields='date, heure, url, login, taille'
Le fichier de logs HTTP du 04/01/2008 utilise les champs dans l'ordre
suivant:
$fields='heure, date, url, login, taille'
le fichier de logs SSL utilise les champs dans l'ordre suivant:
Je compte passer par un seul tableau associatif : %T pour récupérer les
différents champs en se basant sur l'analyse du premier enregistrement.
Ainsi :
%T = (date, heure, url, login, taille ) pour le fichier http du
10/05/2005.
%T = (heure, date, url, login, taille ) pour le fichier http du 04/01/2008.
%T = (ip, heure, date, url, certificat, taille) pour le fichier
SSL.
Et autant de déclarations possibles en fonction du premier
enregistrement.
Malheureusement je n'arrive pas à écrire la syntaxe convenable qui me
permettrait de mettre %T au bon format pour lire mes données ;-(
Est-il possible d'avoir un seul tableau associatif qui puisse prendre en
compte les multiples formats de mes fichiers ?
Le programme en question ressemble à :
While (<STDIN>) {
If ( premier enregistrement ) {
$fields=.
Changer le format de %T comment l'écrire ?
%T =($fields) ; ne marche pas !
} else {
Lire les données et les charger dans %T comment l'écrire
?
En étant sûr au final que par exemple $T{url}
contient bien une url !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas George
"NoSpam" wrote in message <5qR9k.4388$:
%T = (date, heure, url, login, taille )
Ce code-là ne peut pas marcher, à la base. Avant d'aller plus loin, je conseille la lecture de la doc perldsc, sur la manière de construire des structures de données en perl.
"NoSpam" wrote in message
<5qR9k.4388$eR4.802@news1.pds.libertysurf.fr>:
%T = (date, heure, url, login, taille )
Ce code-là ne peut pas marcher, à la base. Avant d'aller plus loin, je
conseille la lecture de la doc perldsc, sur la manière de construire des
structures de données en perl.
Ce code-là ne peut pas marcher, à la base. Avant d'aller plus loin, je conseille la lecture de la doc perldsc, sur la manière de construire des structures de données en perl.