1. Это поведение объясняется autovivification.
2. А где вы такой синтаксис увидели?
delete $a{11}{21,24}{31}
Wednesday, November 28, 2018, 9:04:41 PM, you 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 ? С уважением, Александр. |
--
Best regards,
Eugen Konkov
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
