День добрый!
По моему, эмуляция массива работает при обращении к хешу, а не к ссылке на хеш.
Попробуй так delete @h{11}->@{qw(21 24)};
28.11.2018, 22:05, "Alessandro Gorohovski via Moscow-pm" <[email protected]>:
,--Приветствую Уважаемое 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
--
С уважением,
С уважением,
Виктор Бочкарев ( [email protected] )
+7 (916) 925 64 99
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
