Hello Eugen,
ср, 28 нояб. 2018 г. в 22:30, Eugen Konkov <[email protected]>: > Hello Alessandro, > > 1. Это поведение объясняется autovivification. > Не согласен. Pardon me, причем здесь autovivification > 2. А где вы такой синтаксис увидели? > delete $a{11}{21,24}{31} > Sorry, вообще, это классика. See Larry Wall, Tom Christiansen, & Jon Orwant, Programming Perl, 3rd Russian ed. -p.759, please. > 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
