Иван, Спасибо!

ср, 28 нояб. 2018 г. в 22:14, Иван Бессарабов <[email protected]>:

> Тут дело не в delete
>
> https://perldoc.perl.org/perldata.html#Multi-dimensional-array-emulation
>
> https://perldoc.perl.org/perlvar.html#%24%3b
>
>
> On Wed, 28 Nov 2018 at 22:05, Alessandro Gorohovski via Moscow-pm <
> [email protected]> wrote:
>
>> Приветствую Уважаемое Perl-сообщество,
>>
>> Возможно это покажется тривиальным/хорошо известным поведением
>> функции delete применительно к хешам, но оставлю на всякий случай.
>>
>> Итак имеется хеш %a:
>> print Dumper \%a;
>> $VAR1 = {
>>           '11' => {
>>                     '24' => {
>>                               '31' => 41
>>                             },
>>                     '23' => {
>>                               '33' => 43
>>                             },
>>                     '22' => {
>>                               '32' => 42
>>                             },
>>                     '21' => {
>>                               '31' => 41
>>                             }
>>                   }
>>         };
>> из которого надо удалить, к примеру несколько внутренних элементов,
>> например: $a{11}{21}{31} и $a{11}{24}{31}
>> Выполняем :
>>   delete $a{11}{21,24}{31}
>>
>> но удаления не происходит :(
>> а добавляется новый внутренний загадасный элемент:
>>
>> print Dumper \%a;
>> $VAR1 = {
>>           '11' => {
>>                     '23' => {
>>                               '33' => 43
>>                             },
>>                     '22' => {
>>                               '32' => 42
>>                             },
>>                     '21' => {
>>                               '31' => 41
>>                             },
>>                     '24' => {
>>                               '31' => 41
>>                             },
>>                     '21 24' => {}
>>                   }
>>         };
>>
>> Или например так:
>> delete $a{11}{keys %{$a{11} } }{31}
>>
>> Опять добавляется новый элемент.
>>
>> print Dumper \%a;
>> $VAR1 = {
>>           '11' => {
>>                     '5' => {},
>>                     '21' => {
>>                               '31' => 41
>>                             },
>>                     '23' => {
>>                               '33' => 43
>>                             },
>>                     '22' => {
>>                               '32' => 42
>>                             },
>>                     '21 24' => {},
>>                     '24' => {
>>                               '31' => 41
>>                             }
>>                   }
>>         };
>>
>> Как вы думаете в чём причина такого поведения delete
>> ?
>>
>> С уважением,
>> Александр.
>>
>> --
>> Moscow.pm mailing list
>> [email protected] | http://moscow.pm.org
>>
>
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить