[Moscow.pm] Узнать родительский ключ по ссылке

Denis Evdokimov evdokimov.denis на gmail.com
Ср Окт 2 04:18:01 PDT 2024


Это?

#!/usr/bin/perl
use 5.10.0;
use strict;
use warnings;
use utf8;
use open qw(:std :utf8);

my %h = ( a => 1, b => 1, c => 1 );

say "a";
say findHashKey( \%h, $h{ a } );
say "";
say "b";
say findHashKey( \%h, $h{ b } );
say "";
say "c";
say findHashKey( \%h, $h{ c } );

################################################################################
sub findHashKey {
    my $hash     = shift;
    my $valueRef = \$_[ 0 ];

    my $key;
    my $i = 0;
    foreach ( values %$hash ) {
        if ( $valueRef eq \$_ ) {
            foreach ( keys %$hash ) {
                $i-- == 0 or next;
                $key = $_;
                last;
            }
            last;
        }
        else {
            ++$i;
        }
    }
    return $key;
}
################################################################################

ср, 2 окт. 2024 г. в 14:17, Denis Evdokimov <evdokimov.denis на gmail.com>:

> Это?
>
> ср, 2 окт. 2024 г. в 09:22, Alessandro Gorohovski via Moscow-pm <
> moscow-pm на pm.org>:
>
>> Жаль, что не совсем по subject,
>> но спасибо за "пищу для размышлений".
>>
>>
>> вт, 1 окт. 2024 г. в 23:15, Alexander Batyrshin <0x62ash на gmail.com>:
>>
>>> Когда-то давно я юзала https://metacpan.org/pod/Data%3A%3AFind для
>>> поиска в сложных вложенных структурах.
>>>
>>>
>>>
>>> On 1 Oct 2024, at 12:34, Alessandro Gorohovski via Moscow-pm <
>>> moscow-pm на pm.org> wrote:
>>>
>>> Уважаемое сообщество, приветствую!
>>>
>>> Подскажите, может кто-нибудб знает/сталкивался:
>>> существует ли способ узнать родительский ключ хеша по ссылке?
>>>
>>> # Например, есть хеш
>>> my %h = ( a => { b=> 1}, aa=> {bb=>2, }, );
>>>
>>> # вызов функции, где необходимо узнать родительский ключ
>>> # например, 'aa'
>>> my $k = &where_key( \%{ $h{aa} } );
>>>
>>> exit;
>>>
>>> sub where_key {
>>>   my $sh = shift;
>>>
>>>   my $k =  ??? if ref( $sh ) eq 'HASH';
>>>
>>>   return $k;
>>> }
>>> --
>>> Moscow.pm mailing list
>>> moscow-pm на pm.org | http://moscow.pm.org
>>>
>>>
>>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20241002/1a2712f3/attachment.html>


Подробная информация о списке рассылки Moscow-pm