Comment puis-je obtenir les éléments d'une table de hachage dont les clés correspondent à une expression régulière?
Comment puis-je obtenir les éléments d'une table de hachage dont les clés correspondent à une expression régulière? sans avec n'importe quel module (e.g Tie::RegexpHash)
Comment atteindre cet objectif ?
%s = (
'as2-queen' => 1 ,
'as1-queen' => 2,
);
my $regex = qr/queen/ ;
if ( $s{$regex}) {
print " I am here " ;
}
~
Vous devez montrer à votre sortie attendue. Si vous souhaitez émuler le comportement de la Cravate::RegexpHash, de regarder son code source.
OriginalL'auteur Tree | 2011-02-02
Vous devez vous connecter pour publier un commentaire.
Votre question n'est pas très claire que votre problème est probablement pas juste à propos de "l'aide" d'une expression régulière comme une clé de hachage, mais il s'agit d'obtenir une sortie vous ai pas expliqué.
Je suppose que votre question pourrait être reformulée comme "Comment puis-je obtenir les éléments d'une table de hachage dont les clés correspondent à une expression régulière?" Si c'est le cas, le code suivant va travailler pour vous:
OriginalL'auteur Alessandro
Je devine que vous essayez de faire correspondre les touches dans la table de hachage à l'aide d'une regex.
Si oui, utiliser grep sur la liste des clés:
Est cela que vous vouliez dire?
$first_matching_key
contient le nombre de clés qui correspondent à/queen/
oh pinaise, bonne prise, merci.
Il serait plus clair d'écrire:
grep { /queen/ } keys %s
.OriginalL'auteur David Precious
Utilisation smart matching en Perl 5.10.1 et ci-dessus:
if (%s ~~ /queen/) { say "Here I am" }
depuis%hash ~~ $rx
est défini comme un court-circuitgrep
des clés du modèle.OriginalL'auteur mscha