[Moscow.pm] Интератор инициализирует ссылку на массив/хеш

Иван Бессарабов ivan на bessarabov.ru
Пт Сен 30 06:38:17 PDT 2011


Ок. А почему в списочном контексте происходит инициализация ссылки?

30 сентября 2011 г. 17:32 пользователь Анатолий Шарифулин
<sharifulin на gmail.com> написал:
> Потому что разный контекст.
> foreach (scalar @$t1) {}
> Вот так будет идентично ифу.
>
>
> 2011/9/30 Andrew Shitov <andy на shitov.ru>
>>
>> Потому что $t1 станет другим после foreach, а $t2 не станет :-)
>>
>> $ perl -E'use strict; use Data::Dumper; my $t; print Dumper($t); for
>> (@$t) {}; print Dumper($t);'
>> $VAR1 = undef;
>> $VAR1 = [];
>>
>>
>> 2011/9/30 Иван Бессарабов <ivan на bessarabov.ru>:
>> > Я не могу понять из-за чего происходит такое поведение.
>> > Покажите, пожалуйста, кусок доки где объянено, почему так.
>> >
>> >
>> > #!/usr/bin/perl
>> >
>> > use strict;
>> > use warnings;
>> > use 5.010;
>> > use Data::Dumper;
>> >
>> > my ($t1, $t2);
>> >
>> > foreach (@$t1) {} # почему-то не вызывает ошибку
>> > say Dumper $t1;
>> >
>> > say '' if @$t2; # вызывает ошибку, как и ожидалось
>> >
>> > say 'end';
>> > --
>> > Moscow.pm mailing list
>> > moscow-pm на pm.org | http://moscow.pm.org
>> >
>>
>>
>>
>> --
>> Andrew Shitov
>> ______________________________________________________________________
>> andy на shitov.ru | http://shitov.ru
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
> --
> С уважением,
>  Анатолий Шарифулин.
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>


Подробная информация о списке рассылки Moscow-pm