<div dir="ltr">Добрый день.<div>Думаю дело обстоит так:</div><div><br><div><div># 1)</div><div># вызов foo($_{+undef}) генерирует варнинг 'Use of uninitialized value in hash element'</div><div># потому что в массив @_ вносится алиас несуществующего значения</div>
<div># 2)</div><div># команда $_ = $_[0] копирует уже само значение, а его не существует,</div><div># генерируется варнинг Use of uninitialized value in scalar assignment</div><div>#</div><div>use strict; use warnings;</div>
<div>foo($_{+undef});</div><div>sub foo { $_ = $_[0] }</div></div><div><br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">26 декабря 2013 г., 8:58 пользователь Nikita Zubkov <span dir="ltr"><<a href="mailto:nikzubkov@gmail.com" target="_blank">nikzubkov@gmail.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">Ключ хэша всегда строка.</span><span style="font-family:arial,sans-serif;font-size:13px"> $bar{undef} это то же самое что и </span><span style="font-family:arial,sans-serif;font-size:13px">$bar{"undef"}. То же самое касается</span><div>


<span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">my $h = { undef => 1 };</span></div><div><font face="arial, sans-serif"><br></font><div>


<span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">26 декабря 2013 г., 6:31 пользователь Denis Ibaev <span dir="ltr"><<a href="mailto:dionys@gmail.com" target="_blank">dionys@gmail.com</a>></span> написал:<div>
<div class="h5"><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Привет.<br>
<br>
Вот такой код<br>
<br>
sub foo { my ($val) = @_; }<br>
my %bar;<br>
my $undef;<br>
<br>
foo($bar{undef});<br>
foo($bar{$undef});<br>
<br>
выдаст на втором вызове функции foo() предупреждения<br>
<br>
Use of uninitialized value $undef in hash element<br>
Use of uninitialized value within @_ in list assignment<br>
<br>
При этом в первом вызове массив @_ будет содержать один элемент со<br>
значением undef, точнее алиас для $bar{"undef"}. Во втором же так же<br>
будет один элемент и как будто undef, но, судя по предупреждению, не<br>
совсем он. Похоже, что алиас на неопределённый элемент %bar. В чём же<br>
разница этих вызовов и для чего?<br>
<span><font color="#888888"><br>
--<br>
Денис Ибаев<br>
--<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" target="_blank">http://moscow.pm.org</a><br>
</font></span></blockquote></div></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Regards,<div>Nikita Zubkov.</div></div>
</font></span></div>
<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>
<br></blockquote></div><br></div>