Потому что разный контекст.<div><br></div><div><div>foreach (scalar @$t1) {}</div><div><br></div><div>Вот так будет идентично ифу.</div><div><br></div><div><br></div><br><div class="gmail_quote">2011/9/30 Andrew Shitov <span dir="ltr"><<a href="mailto:andy@shitov.ru">andy@shitov.ru</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Потому что $t1 станет другим после foreach, а $t2 не станет :-)<br>
<br>
$ perl -E'use strict; use Data::Dumper; my $t; print Dumper($t); for<br>
(@$t) {}; print Dumper($t);'<br>
$VAR1 = undef;<br>
$VAR1 = [];<br>
<br>
<br>
2011/9/30 Иван Бессарабов <<a href="mailto:ivan@bessarabov.ru">ivan@bessarabov.ru</a>>:<br>
<div><div></div><div class="h5">> Я не могу понять из-за чего происходит такое поведение.<br>
> Покажите, пожалуйста, кусок доки где объянено, почему так.<br>
><br>
><br>
> #!/usr/bin/perl<br>
><br>
> use strict;<br>
> use warnings;<br>
> use 5.010;<br>
> use Data::Dumper;<br>
><br>
> my ($t1, $t2);<br>
><br>
> foreach (@$t1) {} # почему-то не вызывает ошибку<br>
> say Dumper $t1;<br>
><br>
> say '' if @$t2; # вызывает ошибку, как и ожидалось<br>
><br>
> say 'end';<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>
<br>
<br>
<br>
</div></div><font color="#888888">--<br>
Andrew Shitov<br>
______________________________________________________________________<br>
<a href="mailto:andy@shitov.ru">andy@shitov.ru</a> | <a href="http://shitov.ru" target="_blank">http://shitov.ru</a><br>
</font><div><div></div><div class="h5">--<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>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>С уважением,<br> Анатолий Шарифулин.<br>
</div>