<div>Вместо:</div><div><br></div><div>@$t2 = @$t3;</div><div><br></div><div>обычно пишу:</div><div><br></div><div>$t2 = [ @$t3 ];<br><br>Ну и: нужно быть уверенным в том, что ты разыменовываешь, если не уверен, то @{ $t2 || [] };<br>
Только не нужно быть пароноиком и использовать ref eq 'ARRAY' или использовать перегрузку, когда не известен тип входной структуры.</div><div><br>Такая практика меня ещё ни разу не привела к подобным ошибкам.</div>
<div><br><br><div class="gmail_quote">2011/9/30 Alexander Onokhov <span dir="ltr"><<a href="mailto:ccnweb@gmail.com">ccnweb@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Да про lvalue хорошо<br><div><br>@$t2 = (1,2,3);  # нет ошибки</div><div><div></div><div class="h5"><div><br></div><div><br></div><br><div class="gmail_quote">On Fri, Sep 30, 2011 at 4:42 PM, Dmitry Karpich <span dir="ltr"><<a href="mailto:meettya@gmail.com" target="_blank">meettya@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><a href="http://stackoverflow.com/questions/6419618/perl-vivification-question-while-dereferencing-undefined-array-reference" target="_blank">http://stackoverflow.com/questions/6419618/perl-vivification-question-while-dereferencing-undefined-array-reference</a><div>

<br></div></div><div><a href="http://stackoverflow.com/questions/6419618/perl-vivification-question-while-dereferencing-undefined-array-reference" target="_blank"></a><a href="http://stackoverflow.com/questions/2206836/why-does-perl-autovivify-in-this-case" target="_blank">http://stackoverflow.com/questions/2206836/why-does-perl-autovivify-in-this-case</a></div>

<div><br></div><div><a href="http://stackoverflow.com/questions/2206836/why-does-perl-autovivify-in-this-case" target="_blank"></a>stackoverflow наш друг :)</div><div><div></div><div><div><br></div><div><br><div>
<div>On Sep 30, 2011, at 5:38 PM, Иван Бессарабов wrote:</div><br><blockquote type="cite"><div>Ок. А почему в списочном контексте происходит инициализация ссылки?<br><br>30 сентября 2011 г. 17:32 пользователь Анатолий Шарифулин<br>

<<a href="mailto:sharifulin@gmail.com" target="_blank">sharifulin@gmail.com</a>> написал:<br><blockquote type="cite">Потому что разный контекст.<br></blockquote><blockquote type="cite">foreach (scalar @$t1) {}<br></blockquote>

<blockquote type="cite">Вот так будет идентично ифу.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">2011/9/30 Andrew Shitov <<a href="mailto:andy@shitov.ru" target="_blank">andy@shitov.ru</a>><br>

</blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Потому что $t1 станет другим после foreach, а $t2 не станет :-)<br></blockquote></blockquote>

<blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">$ perl -E'use strict; use Data::Dumper; my $t; print Dumper($t); for<br></blockquote></blockquote>

<blockquote type="cite"><blockquote type="cite">(@$t) {}; print Dumper($t);'<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">$VAR1 = undef;<br></blockquote></blockquote><blockquote type="cite">

<blockquote type="cite">$VAR1 = [];<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote>

<blockquote type="cite"><blockquote type="cite">2011/9/30 Иван Бессарабов <<a href="mailto:ivan@bessarabov.ru" target="_blank">ivan@bessarabov.ru</a>>:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">

<blockquote type="cite">Я не могу понять из-за чего происходит такое поведение.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Покажите, пожалуйста, кусок доки где объянено, почему так.<br>

</blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">

<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">#!/usr/bin/perl<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">

<blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">use strict;<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">

<blockquote type="cite">use warnings;<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">use 5.010;<br></blockquote></blockquote></blockquote><blockquote type="cite">

<blockquote type="cite"><blockquote type="cite">use Data::Dumper;<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote>

<blockquote type="cite"><blockquote type="cite"><blockquote type="cite">my ($t1, $t2);<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote>

</blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">foreach (@$t1) {} # почему-то не вызывает ошибку<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">

<blockquote type="cite">say Dumper $t1;<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite">

<blockquote type="cite"><blockquote type="cite">say '' if @$t2; # вызывает ошибку, как и ожидалось<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">

<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">say 'end';<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">

<blockquote type="cite">--<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Moscow.pm mailing list<br></blockquote></blockquote></blockquote><blockquote type="cite">

<blockquote type="cite"><blockquote type="cite"><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></blockquote></blockquote>

</blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite">

<blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">--<br></blockquote></blockquote><blockquote type="cite">

<blockquote type="cite">Andrew Shitov<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">______________________________________________________________________<br></blockquote></blockquote><blockquote type="cite">

<blockquote type="cite"><a href="mailto:andy@shitov.ru" target="_blank">andy@shitov.ru</a> | <a href="http://shitov.ru" target="_blank">http://shitov.ru</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">

--<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Moscow.pm mailing list<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><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>

</blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">--<br></blockquote><blockquote type="cite">С уважением,<br>

</blockquote><blockquote type="cite"> Анатолий Шарифулин.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">--<br></blockquote><blockquote type="cite">Moscow.pm mailing list<br></blockquote>

<blockquote type="cite"><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></blockquote><blockquote type="cite"><br></blockquote>

<blockquote type="cite"><br></blockquote>-- <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>

</div></blockquote></div><br></div></div></div></div><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></blockquote></div><br><br clear="all"><div><br></div>-- <br></div></div><font color="#888888">Alexander<br>
</font><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><br clear="all"><div><br></div>-- <br>С уважением,<br> Анатолий Шарифулин.<br>
</div>