<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>