Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
653 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Les tableaus à plusieurs dimension en Perl.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Les tableaus à plusieurs dimension en Perl.

n°664039
BuzzzzEcla​ir
Posté le 05-03-2004 à 11:03:38  profilanswer
 

Voila je commence tout juste en Perl et je voudrais faire un script qui annalyse les fichiers log de Trend Micro Interscan.
Jusque là tout va bien.
 
J'ai bien commencé mais il me reste à entrer les données dans un tableau ou il y aurai deux colonnes :
 Colone 1 : nom du virus
 Colone 2 : nombre d'occurance du virus dans les log
 
Pour le moment j'ai un tableau avec la liste des virus
et un autre avec les occurances.
 
Comment faire pour créer un seul tableau à deux dimensions avec les valeurs de mes deux autres tableau?
 
Le but de la manip est de pouvoir faire des trie par nom de virus ou par nombre d'occurance par la suite.
 
Je suis peut etre sur la mauvaise piste ... J'ai encore du mal a voir la différence entre les array, les hash ... etc.
:)
 
Merci d'avoir lu le topic :)
 
Régis

mood
Publicité
Posté le 05-03-2004 à 11:03:38  profilanswer
 

n°664220
jeh_
Posté le 05-03-2004 à 13:05:35  profilanswer
 

Voilà ce que j'ai fait rapidement, ça vaut ce que ça vaut mais ça peut peut être t'aider :  
je pars du principe que tes deux tableaux font la même taille.
Soient @v le tableau de virus et @o le tableau des occurences.
CODE :  
my $hash;
my $i=0;
foreach(@v) { #ou foreach(@o)
   $hash->{"$_"}=@o[$i];
   $i++;
}
FIN CODE.
Ainsi, ton nom de virus est associé à son nombre d'occurences.  :)

n°664225
uriel
blood pt.2
Posté le 05-03-2004 à 13:09:05  profilanswer
 

Les tableaux
vous me le copiez 2374 fois dans une boucle while :O


Message édité par uriel le 05-03-2004 à 13:09:25

---------------
IVG en france
n°664231
BuzzzzEcla​ir
Posté le 05-03-2004 à 13:12:22  profilanswer
 

jeh_ a écrit :

Voilà ce que j'ai fait rapidement, ça vaut ce que ça vaut mais ça peut peut être t'aider :  
je pars du principe que tes deux tableaux font la même taille.
Soient @v le tableau de virus et @o le tableau des occurences.
CODE :  
my $hash;
my $i=0;
foreach(@v) { #ou foreach(@o)
   $hash->{"$_"}=@o[$i];
   $i++;
}
FIN CODE.
Ainsi, ton nom de virus est associé à son nombre d'occurences.  :)  


Ca sens plutot bon ton truc ! Je viens de regarder et apriori c'était bien dans le hashage qu'il fallait que je me dirige ...
Domage j'ai fait des array ...
Y'a plus qu'a comme on dit.
Merci pour la réponse.

n°664237
BuzzzzEcla​ir
Posté le 05-03-2004 à 13:15:38  profilanswer
 

uriel a écrit :

Les tableaux
vous me le copiez 2374 fois dans une boucle while :O


 
while ($message_author eq "uriel" )
 { delete $message ;
   print "Les tableau<X> c'est moins bien que les <i>hash</i>." ;
 }
 
 :D  
 

n°664240
uriel
blood pt.2
Posté le 05-03-2004 à 13:17:40  profilanswer
 

BuzzzzEclair a écrit :


 
while ($message_author eq "uriel" )
 { delete $message ;
   print "Les tableau<X> c'est moins bien que les <i>hash</i>." ;
 }
 
 :D  
 
 


 
[:ddr555]


---------------
IVG en france
n°664319
BuzzzzEcla​ir
Posté le 05-03-2004 à 14:03:02  profilanswer
 

BuzzzzEclair a écrit :


Ca sens plutot bon ton truc ! Je viens de regarder et apriori c'était bien dans le hashage qu'il fallait que je me dirige ...
Domage j'ai fait des array ...
Y'a plus qu'a comme on dit.
Merci pour la réponse.


 
J'ai intégré, ca semble pas mal mais j'ai du mal a faire un print du hash.
J'ai un truc dans ce genre pour le print du hash :
 

Code :
  1. for my $key ( keys(%$hash) )
  2. {my $value = $hash{$key} ;
  3. print "$key => $value\n" ;
  4. }

n°664329
BuzzzzEcla​ir
Posté le 05-03-2004 à 14:07:44  profilanswer
 

Et donc j'ai oblié de dire que le print n'affiche rien pour la vairable $value, alors que dans l'exemple de jeh_ la valeur est bien associée au hash. ! :(

n°664346
BuzzzzEcla​ir
Posté le 05-03-2004 à 14:14:15  profilanswer
 

BuzzzzEclair a écrit :

Et donc j'ai oblié de dire que le print n'affiche rien pour la vairable $value, alors que dans l'exemple de jeh_ la valeur est bien associée au hash. ! :(


Ok j'ai trouvé ... au cas ou ca interesse qqun un jour :)

Code :
  1. for my $key ( keys(%$hash) )
  2. {my $value = $hash->{"$key"} ;
  3. print "$key => $value\n" ;
  4. }


 
Et voila un résultat de sortie du script :) :
[root@www iscan]# ./report-virus-1.1.pl 2004 03 04
Nombre de virus: 43
WORM_NETSKY.B => 2
WORM_NETSKY.C => 1
WORM_NETSKY.D => 40

n°665066
matafan
Posté le 06-03-2004 à 07:39:12  profilanswer
 

Tu as trouvé mais est-ce que tu as compris ? Il te faut un « -> » après le $hash car dans ton programme $hash n'est pas un hash : c'est une référence à un hash. C'est parce que tu l'a initialisé avec en faisant « $hash->{...} = ... » au lieu de « $hash{...} = ... ». Dans le premier cas tu as un $hash et c'est une référence a un hash anonyme. Dans le deuxième cas tu as un %hash et c'est un hash. Comme en C, la flèche permet de déréfencer. C'est juste un « sucre de syntaxe » : « $hash->{...} » est équivalent à « ${%$hash}{...} ».
 
Et sinon pour être tout a fait complet : « %hash = ("a" => "A" ) » défini un hash. « $hash = {"a" => "A"} » fait « pointer » $hash vers un hash anonyme. « { ... } » est le contructeur de hash anonyme, comme « [ ... ] » est le constructeur de tableau anonyme. Donc : « @array = (1, 2, 3) » mais « $array = [1, 2, 3] ».

mood
Publicité
Posté le 06-03-2004 à 07:39:12  profilanswer
 

n°666938
BuzzzzEcla​ir
Posté le 08-03-2004 à 10:27:06  profilanswer
 

matafan a écrit :

Tu as trouvé mais est-ce que tu as compris ? Il te faut un « -> » après le $hash car dans ton programme $hash n'est pas un hash : c'est une référence à un hash. C'est parce que tu l'a initialisé avec en faisant « $hash->{...} = ... » au lieu de « $hash{...} = ... ». Dans le premier cas tu as un $hash et c'est une référence a un hash anonyme. Dans le deuxième cas tu as un %hash et c'est un hash. Comme en C, la flèche permet de déréfencer. C'est juste un « sucre de syntaxe » : « $hash->{...} » est équivalent à « ${%$hash}{...} ».
 
Et sinon pour être tout a fait complet : « %hash = ("a" => "A" ) » défini un hash. « $hash = {"a" => "A"} » fait « pointer » $hash vers un hash anonyme. « { ... } » est le contructeur de hash anonyme, comme « [ ... ] » est le constructeur de tableau anonyme. Donc : « @array = (1, 2, 3) » mais « $array = [1, 2, 3] ».


 
AH tout s'éclair d'un seul coup! :))
J'ai fait du C, donc je connais les structures etc ... ca me fait penser un peu à ca mais j'ai encore du mal à faire la différence entre les différents type en Perl.
 
Je te remercie beaucoup de m'avoir éclaircis ce point.  ;à


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Les tableaus à plusieurs dimension en Perl.

 

Sujets relatifs
[SQL] Requete INSERT dans plusieurs tables liéesexecution d'un script php sous perl
[Perl] Lancer une centaine de "threads" sous windowsafficher des images dix par dix sur perl
[Perl] Win32API et return code[Perl] Navigation dans un site + remplissage de formulaires
[PHP/SQL] Plusieurs conditions dans where ?Plusieurs questions générale sur la programmation
problème pour faire un background sur plusieurs images..[Perl] Installer Perl est des modules
Plus de sujets relatifs à : Les tableaus à plusieurs dimension en Perl.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR