[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