<div>Для решения задачи все равно нужен доступ к исходному хэшу, т.к. в изначальном коде мы передаем уже обращаемся по ключу и в функцию уже передается значение, т.е. какой-то хэш или массив или значение. А чтобы получить ключ, то нужно рекурсивно пройтись по исходному хэшу и сравнить Scalar::Util::refaddr всех значений с исходным.</div><div> </div><div>----------------<div>01.10.2024, 13:47, "Alessandro Gorohovski via Moscow-pm" <moscow-pm@pm.org>:</div><div>Кому: Moscow.pm group (moscow-pm@pm.org);</div><div>Копия: Alessandro Gorohovski (an.gorohovski@gmail.com);</div><div>Тема: [Moscow.pm] Узнать родительский ключ по ссылке;</div><div> </div><blockquote><div><div style="font-size:large">Нет, это не вариант.</div><div style="font-size:large">Функция не знает о хеше %h и его структуре, совсем не знает :)</div><div style="font-size:large"> </div><div style="font-size:large">Представьте, что этот хеш может быть не 2х уровневый, а много-много-вложенный по уровням</div><div style="font-size:large">и </div><div style="font-size:large"><span style="font-size:small">$ref eq $value</span> </div><div style="font-size:large">может случится на другом уровне.</div><div style="font-size:large"> </div></div> <div><div>вт, 1 окт. 2024 г. в 13:03, Steffen Winkler via Moscow-pm <<a href="mailto:moscow-pm@pm.org" rel="noopener noreferrer">moscow-pm@pm.org</a>>:</div><blockquote style="border-left-color:rgb( 204 , 204 , 204 );border-left-style:solid;border-left-width:1px;margin:0px 0px 0px 0.8ex;padding-left:1ex">use strict;<br />use warnings;<br /><br />my %h = ( a => { b=> 1}, aa=> {bb=>2, }, );<br /><br />sub where_key {<!-- --><br />     my $ref = shift;<br /><br />     while ( my ($key, $value) = each %h ) {<!-- --><br />         $ref eq $value<br />              and return $key;<br />     }<br /><br />     return;<br />}<br /><br />my $k = where_key( $h{aa} );<br />print $k;<br />exit;<br /><br /><br />--<br />Moscow.pm mailing list<br /><a href="mailto:moscow-pm@pm.org" rel="noopener noreferrer" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" rel="noopener noreferrer" target="_blank">http://moscow.pm.org</a></blockquote></div>,--<br />Moscow.pm mailing list<br /><a href="mailto:moscow-pm@pm.org" rel="noopener noreferrer">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" rel="noopener noreferrer">http://moscow.pm.org</a></blockquote><div> </div><div> </div><div> </div><div> </div></div><div>-- <br />Яндекс.Почта — надёжная почта</div><div>http://mail.yandex.ru/neo2/collect/?exp=1&t=1</div>