<p> Но только во втором случае обращение в lvalue приводит undef к пустой строке, что и вызывает uninitialized warning</p>
<p></p>
<p>а в случае foo($bar{+undef});</p>
<p>подозреваю перевод undef в пустую строку сделано на этапе компиляции, поэтому варнинг и не выскакивает</p>
<p></p>
<div id="editor_compose_signature">
<p>Анатолий Гришаев.</p>
</div>
<blockquote style="border-left: 1px solid #BBBBBB; margin: 1ex; padding: 1ex;">
<p>26.12.2013, 12:15:02 пользователь Alexander Onokhov (ccnweb@gmail.com) написал:</p>
<br />
<div class="RMCWHRAD">
<div dir="ltr">lvalue, присваивание которому автовивифицирует элемент хеша в обоих случаях передаётся.<br />
<div class="RMCWHRAD gmail_extra"><br /><br />
<div class="RMCWHRAD gmail_quote">2013/12/26 Анатолий Гришаев <span dir="ltr"><<a href="mailto:0body0@rambler.ru"  target="_blank">0body0@rambler.ru</a>></span><br />
<blockquote class="RMCWHRAD gmail_quote" style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;"><br /> <br /> Во втором случае передается lvalue, при обращении к нему и вылетает второе предупреждение.<br /> Можно закомментировать строчку с $val и посмотреть.<br /> А значение одно и тоже undef.<br /> <br /> Анатолий Гришаев.<br /> <br />
<blockquote class="RMCWHRAD gmail_quote" style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;">26.12.2013, 4:32:27 пользователь Denis Ibaev (<a href="mailto:dionys@gmail.com"  target="_blank">dionys@gmail.com</a>) написал:
<div class="RMCWHRAD im"><br /> <br /> Привет.<br /> <br /> Вот такой код<br /> <br /> sub foo { my ($val) = @_; }<br /> my %bar;<br /> my $undef;<br /> <br /> foo($bar{undef});<br /> foo($bar{$undef});<br /> </div>
выдаст на втором вызове функции foo() предупреждения
<div class="RMCWHRAD im"><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"}. Во втором же так же</div>
будет один элемент и как будто undef, но, судя по предупреждению, не<br /> совсем он. Похоже, что алиас на неопределённый элемент %bar. В чём же
<div class="RMCWHRAD im"><br /> разница этих вызовов и для чего?<br /> <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 /> <br /> </div>
</blockquote>
<div class="RMCWHRAD HOEnZb">
<div class="RMCWHRAD h5">-- <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></div>
</div>
</blockquote>
</div>
<br /><br />-- <br />Alexander</div>
</div>
</div>
</blockquote>