Thread Gibt es einen Trick bei dem ein hash value seinen hash key kennt? (13 answers)
Opened by barney at 2025-07-04 14:43

barney
 2025-07-07 23:51
#197104 #197104
User since
2008-08-31
213 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja, mit einem Lookup auf dem Hash kann man die Frage lösen. Das ist auch am lesbarsten, weil man sich die do Blöcke spart. Die Blöcke hat man ja nur gebraucht um den Scope von $key zu begrenzen.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use v5.24;
use warnings;

use Benchmark qw(cmpthese);

sub find_key {
    my ($hash, $current_sub) = @_;

    for my $key ( keys $hash->%* ) {
        return $key if $hash->{$key} == $current_sub;
    }

    return "not found";
}

my $subs;

cmpthese(
    2,
    $subs = {
        AAA => sub { say ''; say 'aaa'; say find_key($subs, __SUB__) },
        BBB => sub { say ''; say 'bbb'; say find_key($subs, __SUB__) },
    }
);

In der Praxis werde ich natürlich tunlichst all diese Tricks vermeiden und im Bedarfsfall den Schlüssel zweimal hinschreiben.

View full thread Gibt es einen Trick bei dem ein hash value seinen hash key kennt?