Wie bekomme ich Elemente aus einem hash, dessen Schlüssel die übereinstimmung eines gegebenen regex?
Wie bekomme ich Elemente aus einem hash, dessen Schlüssel die übereinstimmung eines gegebenen regex? ohne usign jedem Modul (e.g Tie::RegexpHash)
Wie Sie diese erreichen ?
%s = (
'as2-queen' => 1 ,
'as1-queen' => 2,
);
my $regex = qr/queen/ ;
if ( $s{$regex}) {
print " I am here " ;
}
~
Sie sollten zeigen Sie Ihre erwartete Leistung. Wenn Sie möchten, zu emulieren das Verhalten von Tie::RegexpHash, Blick auf den source code.
InformationsquelleAutor Tree | 2011-02-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Frage ist nicht ganz klar, wie Ihr problem ist wahrscheinlich nicht nur um "mithilfe" einer regex als hash-Schlüssel, aber es geht darum, eine Ausgabe hast du nicht erklärt.
Ich nehme an, Ihre Frage könnte umformuliert werden als "Wie bekomme ich Elemente aus einem hash, dessen Schlüssel die übereinstimmung eines gegebenen regex?" Wenn dies der Fall ist, der folgende code funktioniert für Sie:
InformationsquelleAutor Alessandro
Ich vermute, du hast versucht, Schlüssel in den hash mit einem regex.
Wenn dem so ist, verwenden Sie grep auf der Liste der Schlüssel:
Ist, dass das, was du meintest?
$first_matching_key
enthält die Anzahl der Tasten, Spiel/queen/
d ' Oh, guter Fang, vielen Dank.
Wäre es klarer zu schreiben:
grep { /queen/ } keys %s
.InformationsquelleAutor David Precious
Verwenden smart matching in Perl 5.10.1 und mehr:
if (%s ~~ /queen/) { say "Here I am" }
seit%hash ~~ $rx
ist definiert als eine shortcircuitinggrep
der Schlüssel für das Muster.InformationsquelleAutor mscha