Тут дело не в 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

Ответить