<html><head><title>Re: [Moscow.pm] Interesting behavior of 'delete' function</title>
</head>
<body>
<span style=" font-family:'Tahoma'; font-size: 9pt;">Hello Alessandro,<br>
<br>
1. Это поведение объясняется autovivification.<br>
<br>
2. А где вы такой синтаксис увидели?<br>
 delete $a{11}{21,24}{31}<br>
<br>
Wednesday, November 28, 2018, 9:04:41 PM, you wrote:<br>
<br>
</span><table style =" border-collapse: collapse;" cellSpacing = 2>
<tr>
<td width=2 bgcolor= #0000ff style="border: 1px solid black;"><br>
</td>
<td style="border: 1px solid black;"><span style=" font-family:'Tahoma'; font-size: 9pt;">Приветствую Уважаемое Perl-сообщество,<br>
<br>
Возможно это покажется тривиальным/хорошо известным поведением<br>
функции delete применительно к хешам, но оставлю на всякий случай.<br>
<br>
Итак имеется хеш %a:<br>
print Dumper \%a;<br>
$VAR1 = {<br>
          '11' => {<br>
                    '24' => {<br>
                              '31' => 41<br>
                            },<br>
                    '23' => {<br>
                              '33' => 43<br>
                            },<br>
                    '22' => {<br>
                              '32' => 42<br>
                            },<br>
                    '21' => {<br>
                              '31' => 41<br>
                            }<br>
                  }<br>
        };<br>
из которого надо удалить, к примеру несколько внутренних элементов,<br>
например: $a{11}{21}{31} и $a{11}{24}{31}<br>
Выполняем :<br>
  delete $a{11}{21,24}{31}<br>
<br>
но удаления не происходит :(<br>
а добавляется новый внутренний загадасный элемент:<br>
<br>
print Dumper \%a;<br>
$VAR1 = {<br>
          '11' => {<br>
                    '23' => {<br>
                              '33' => 43<br>
                            },<br>
                    '22' => {<br>
                              '32' => 42<br>
                            },<br>
                    '21' => {<br>
                              '31' => 41<br>
                            },<br>
                    '24' => {<br>
                              '31' => 41<br>
                            },<br>
                    '21 24' => {}<br>
                  }<br>
        };<br>
<br>
Или например так:<br>
delete $a{11}{keys %{$a{11} } }{31}<br>
<br>
Опять добавляется новый элемент.<br>
<br>
print Dumper \%a;<br>
$VAR1 = {<br>
          '11' => {<br>
                    '5' => {},<br>
                    '21' => {<br>
                              '31' => 41<br>
                            },<br>
                    '23' => {<br>
                              '33' => 43<br>
                            },<br>
                    '22' => {<br>
                              '32' => 42<br>
                            },<br>
                    '21 24' => {},<br>
                    '24' => {<br>
                              '31' => 41<br>
                            }<br>
                  }<br>
        };<br>
<br>
Как вы думаете в чём причина такого поведения delete<br>
?<br>
<br>
С уважением,<br>
Александр.<br>
</td>
</tr>
</table>
<br>
<br>
<br>
<span style=" font-family:'tahoma'; font-size: 9pt; color: #c0c0c0;"><i>--<br>
Best regards,<br>
Eugen Konkov</body></html>