День добрый!
 
По моему, эмуляция массива работает при обращении к хешу, а не к ссылке на хеш.
 
Попробуй так 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

Ответить