<div>В опкодах в первом случае</div><div> </div><div>7        <1> rv2hv[t2] lK/3 ->8</div><div> </div><div>во втором: </div><div> </div><div>7           <1> rv2hv[t2] lKRM/DREFed,3 ->8</div><div> </div><div>выглядит так, будто для keys() требуется, чтобы аргумент был lvalue.</div><div>lvalue из undef автовивифицируется, это факт.</div><div> </div><div>Непонятно мне только, зачем аргументу keys быть lvalue?</div><div> </div><div> </div><div>19.11.2013, 12:19, "Ilya Chesnokov" <chesnokov.ilya@gmail.com>:</div><blockquote type="cite"><div>2013/11/19 Denis Ibaev <span><<a href="mailto:dionys@gmail.com" target="_blank">dionys@gmail.com</a>></span><br /><div><div><blockquote style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:#cccccc;border-left-style:solid;padding-left:1ex;">Привет.<br /> <br /> > perl -E 'use strictures; my $v; say(%$v);'<br /> Can't use an undefined value as a HASH reference at -e line 1.<br /> <br /> > perl -E 'use strictures; my $v; say(keys(%$v), "ok");'<br /> ok<br /> <br /> Почему разыменование переменной со значением undef в хеш не вызывает<br /> ошибки с случае keys() и values()?<br /> </blockquote><div> </div><div>Видимо, keys и пр. автовивифицируют $v:</div><div> </div><div>perl -Mstrict -E 'my $v; say "keys: ", keys %$v; say "v: ", $v'</div><div><div>keys: </div><div>v: HASH(0x96bde8)</div></div><div> </div><div> </div><div> </div><blockquote style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:#cccccc;border-left-style:solid;padding-left:1ex;">> perl -v<br /> This is perl 5, version 14, subversion 2 (v5.14.2) built for<br /> x86_64-linux-gnu-thread-multi<br /> <span><font color="#888888"><br /> --<br /> Денис Ибаев<br /> --<br /> Moscow.pm mailing list<br /> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">http://moscow.pm.org</a><br /> </font></span></blockquote></div><br /><br /><div> </div>-- <br />Best regards,<br />Ilya Chesnokov</div></div>,<p>-- <br />Moscow.pm mailing list<br /><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/">http://moscow.pm.org</a></p></blockquote><div> </div><div> </div><div>-- <br />Oleg Alistratov</div>