<div dir="ltr"><div dir="ltr">Иван, Здравствуйте.<br><br><div class="gmail_quote"><div dir="ltr">чт, 29 нояб. 2018 г. в 00:08, Иван Бессарабов via Moscow-pm <<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br><div><div>> причем здесь autovivification</div><div><br></div><div>А куда в результате появился пустой hashref?</div><div><br></div></div></div></div></blockquote><div>Вот и я об этом, куд-куда и зачем он взялся то?</div><div>когда функция delete, наоборот, должна, как минимум ничего не cделать.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div><div></div><div>```</div><div>'21 24' => {}</div><div>```</div></div></div></div></blockquote><div> вообще, если быть точным, там появился</div><div> '21 24' => {},<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div><div></div><div>> Programming Perl, 3rd Russian ed. -p.759,</div><div><br></div><div>Разве `delete @{ $dungeon[$x][$y] }{ "OCCUPIED", "DAMP", "LIGHTED" };`</div><div>это то же самое что и `delete $a{11}{21,24}{31}` ?</div></div><div><br></div></div></div></blockquote><div>Меня попросили/спросили я ответил.</div><div>Извините, я и не утверждал что это то же самое.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div></div><div><br></div></div></div><div class="gmail_quote"><div dir="ltr">On Wed, Nov 28, 2018 at 11:54 PM Alessandro Gorohovski via Moscow-pm <<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Hello Eugen,<div><br></div><div class="gmail_quote"><div dir="ltr">ср, 28 нояб. 2018 г. в 22:30, Eugen Konkov <<a href="mailto:kes-kes@yandex.ru" target="_blank">kes-kes@yandex.ru</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<span style="font-family:Tahoma;font-size:9pt">Hello Alessandro,<br>
<br>
1. Это поведение объясняется autovivification.<br></span></div></blockquote><div><br></div><div>Не согласен. Pardon me, причем здесь autovivification</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><span style="font-family:Tahoma;font-size:9pt">
2. А где вы такой синтаксис увидели?<br>
delete $a{11}{21,24}{31}<br></span></div></blockquote><div><br></div><div>Sorry, вообще, это классика.</div><div>See Larry Wall, Tom Christiansen, & Jon Orwant, Programming Perl, 3rd Russian ed. -p.759,</div><div>please.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><span style="font-family:Tahoma;font-size:9pt">
Wednesday, November 28, 2018, 9:04:41 PM, you wrote:<br>
<br>
</span><table style="border-collapse:collapse" cellspacing="2">
<tbody><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>
</span></td>
</tr>
</tbody></table>
<br>
<br>
<br>
<span style="font-family:tahoma;font-size:9pt;color:rgb(192,192,192)"><i>--<br>
Best regards,<br>
Eugen Konkov</i></span></div>
</blockquote></div></div></div>
-- <br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
</blockquote></div>
-- <br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
</blockquote></div></div></div>