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