Perl Delete Base Key through Hash Reference

Viewed 1044
my %myHash = (
    key1 => {
        test1 => 1,
        test2 => 2,
    },
    key2 => {
        test1 => 3,
        test2 => 4,
    },
);

my $myRef = $myHash{ "key". ((~~keys %myHash) + 1) } //= {
    test1 => 5,
    test2 => 6,
};    

Humor me and assume the above is actually practical. How is it I can delete this newly created key through the reference?

delete $myRef;

Obviously doesn't work

EDIT: So from zostay I have the following...

sub deleteRef {
    my ( $hash_var, $hash_ref ) = @_;

    for ( keys %$hash_var ) {
        delete $hash_var->{$_} if ($hash_var->{$_} == $hash_ref);
    }
}

Usage:

deleteRef(\%myHash, $myRef);

How's that? Still not recommended?

3 Answers
Related