6
votes

Perl - Comment trouver la clé d'un hachage si vous connaissez la valeur?

Ce que j'essaie de faire est de récupérer la clé d'une paire de valeur clé dans un hachage car tout ce que j'ai d'un fichier que je lis est une valeur.

Le code produit quelque chose comme ceci:

12345 welcome.html

Le code de cette partie est: xxx

Ensuite, ailleurs dans un fichier appelé bad.txt i get de sortie comme:

documents qui ont échoué: daerror 6 0 6 Bienvenue.html

Le code de lecture de ce fichier est le suivant: xxx

mais j'ai déjà le nom de fichier extrait de ceci en utilisant une expression régulière.


1 commentaires

[^] + peut également être écrit comme \ s + Vous pouvez également utiliser M et définir $ Type et $ Testdoc tous sur une ligne. mon ($ type, $ testdoc) = $ _ = ~ m / ^ (\ s +) \ s + \ s + \ s + (\ s +) \ s + /; Die "Ligne non valide $ _ IN $ Badfiles \ n" Sauf si défini $ Type && Défini $ $ Testdoc; .


3 Réponses :


10
votes

Vous pouvez effectuer une copie inversée de votre hachage d'origine avec l'opérateur inverse puis faire une recherche "normale" (fonctionnerait correctement uniquement si les valeurs de hachage d'origine sont uniques).

Plus sur ce sujet, y compris la manutention des valeurs en double sur Perlfaq4: Comment rechercher un élément de hachage par valeur


1 commentaires

Merci pour le lien, je devrai examiner la question avant d'accepter toutes les réponses!



3
votes

Si vous n'utilisez pas le % Bugs HASH pour autre chose, il suffit de modifier: xxx

à: xxx

Ensuite, vous aurez un hachage avec les touches correctes de vos besoins de requête.


1 commentaires

Ou créez un nouveau hachage et de gérer les valeurs dupliquées, utilisez un tableau.



9
votes
my ($key) = grep{ $bugs{$_} eq '*value*' } keys %bugs;
print $key;

0 commentaires