Виктор, Приветствую!
чт, 29 нояб. 2018 г. в 08:04, Виктор Бочкарев via Moscow-pm <
[email protected]>:
> День добрый!
>
> По моему, эмуляция массива работает при обращении к хешу, а не к ссылке на
> хеш.
>
> Попробуй так delete @h{11}->@{qw(21 24)};
>
Да, ну, нет конечно :)
это не работает in 1st,
in 2nd таким приемом вы предлагаете удалить все элементы принадлежащие
$a{11}{21} и $a{11}{24}
а требуется удалить только подэлементы {31}
i.e. $a{11}{21}{31} и $a{11}{24}{31}
>
> 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
>
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org