Supprimer valeure d'un tableau contenant des hash [PERL] - Perl - Programmation
Marsh Posté le 16-12-2011 à 12:17:19
Bonjour, 
 
La manière standard:  
Parcourir l'array et tester chaque élément pour avoir l'indice de l'élément à retirer 
Quand il est trouvé, appeller splice avec cet indice: splice(@array, $indextoremove,1); 
ne convient pas? 
 
A+,
Marsh Posté le 16-12-2011 à 15:30:00
Je vois bien comment parcourir le tableau: 
| Code : 
 | 
 
 
Mais je ne sais pas quoi mettre a la place de $indextoremove.  
J'ai essayé avec: 
| Code : 
 | 
 mais ça ne fonctionne pas. 
Je ne vois pas comment récupérer cette valeur vu que mon tableau ressemble a: 
| Code : 
 | 
Marsh Posté le 16-12-2011 à 20:47:18
A priori, quelque chose comme ceci: 
my $ID_inFork = "8"; 
my @indextoremove = (); 
foreach my $row_inFork (0..$#tabProc_temp) { 
  push(@indextoremove, $row_inFork) if ($tabProc_temp[$row_inFork]->{ID_PROCESS} == $ID_inFork ) 
} 
foreach ((reverse @indextoremove)) { 
  splice(@tabProc_temp, $_, 1); 
} 
 
Un tableau pour collecter les indices a supprimer 
Un parcours du tableau par indice croissant avec collecte des indices à supprimer 
Une inversion du tableau pour retirer par ordre décroissant, sinon, les indices collectés ne vont plus être bons pour splice dès qu'il a été appliqué une fois. 
Le retrait des éléments du tableau. 
 
Au cas ou l'on sait qu'il n'y a au plus qu'une seule valeur d'indice à retirer, ça peut se simplifier. 
 
A+,
Marsh Posté le 19-12-2011 à 11:09:27
Merci Gilou!   
  
 
Ton code fonctionne parfaitement. Comme je l'esperai, ça a permis de supprimer une erreure qui arivait de temps en temps a savoir: si je mettai un sleep a 1 (pour simuler le lancement d'un job) la hiérarchisation ne fonctionnait plus. 
 
Encore merci ! 
Cordialement, 
Benjamin Pleumeckers. 
 
Pour les curieux, voici le code: 
 
| Code : 
 | 
Marsh Posté le 19-12-2011 à 11:48:01
Excellent!  
C'était codé sans visibilité (je suis sous un environnement Windows ou certains modules ne sont pas disponibles) et je ne pouvais donc pas tester ce code. 
A+,
Marsh Posté le 16-12-2011 à 12:09:19
Bonjour, 
  
J'ai un tableau (@tabProc_temp) qui est construit comme ceci:
Mon probleme est que je ne trouve pas comment supprimer un des élément de ce tableau en fonction de la valeure de "'ID_PROCESS' => 'x',".
Par exemple, je voudrai supprimer seulement l’élément qui a pour "ID_PROCESS":8.
Le résultat serait donc:
Avez vous une idée pour faire cela?
Merci,
Cordialement,
Benjamin.
Message édité par Super_carotte le 16-12-2011 à 12:11:14