Perl: Correspondance des clés de hachage à une expression régulière
Je me demandais si Perl a un moyen intégré pour vérifier l'existence d'un élément de hachage avec une clé correspondant à un particulier regex. Par exemple:
my %h = ( 'twelve' => 12, 'thirteen' => 13, 'fourteen' => 14 );
Je me demandais si il n'y a aucun moyen de le faire:
print "We have 12\n" if exists $h{twelve};
print "We have some teens\n" if exists $h{/.*teen$/};
- Si vous avez la
teen$
la.*
est superflu.
Vous devez vous connecter pour publier un commentaire.
La smart opérateur de match est-ce (disponible depuis Perl v5.10).
Exemple d'utilisation:
En plus d'autres réponses ici, vous pouvez également le faire avec du perl grep:
Ouais, ça s'appelle:
(Avant de smart match, ce qui est. Voir la foule réponse pour smart match.)
Vous pouvez également trier les touches:
Je voudrais congeler dans une "opération":
Et vous pouvez l'utiliser comme ceci:
Ou
sort
? Hein??? Il n'y a aucune raison pour trier les touches si vous êtes juste des tests pour savoir si une correspondance existe. Justefirst { m/teen$/ } keys %hash
est mieux.first
est une implémentation deany
concept, mais ne contient que les autres implications: d'abord comment? j'ai tendance à aimer pour couvrir plus de l'application spécifique.any
concept, indépendant de l'ordre;first
est approprié uniquement parce queList::Util
ne fournit pas unany
fonction.Il n'y a pas moyen intégré, mais il n'y a
Tie::Hash::Regex
sur le CPAN.