-
regex dans hashage
Salut,
Je bute sur l'utilisation d'expression régulière dans un tableau de hachage. Je défini un hash par exemple :
Code:
my %hash = ("AB[0-9]+" => "toto1", "ABCD"=>"toto2");
et après je veux savoir si une variable appartient à cette table de hashage. Pour ça j'utilise, exists. Quand il s'agit de la valeur "ABCD" il la trouve, ya pas de problème, mais quand la vlauer est : "AB0123", par exemple, il ne la trouve pas. Et je sais pas comment lui dire d'interpréter les clés comme étant des expressions régulières ???? Ca marche bien avec un "each", mais j'aimerais savoir si c'est possible avec la commande "exists" ??
Merci
-
L'opérateur exists ne permettra pas un tel traitement. Il n'y a pas d'autre choix, dans ce type de conception, que de tester TOUTES les clefs du hachage comme expression rationnelle correspondant ou non à une valeur de variable.
grep permet de le faire relativement simplement, mais c'est quand même un traitement lourd (car exhaustif) !
Un truc comme ça devrait pouvoir faire l'affaire (non testé) :
Code:
@cles_correspondantes = grep { $_ if ($valeur =~ /$_/) } keys (%hash);
-
Tu peux aussi utiliser List::Util::first si tu n'as besoin que d'une seul clé correspondante.
--
Jedaï
-
Ok, merci, c'est bien ce que je pensais. Je vais essayer ça.
:wink: