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

Dmitry Karpich meettya на gmail.com
Пт Сен 30 06:42:21 PDT 2011


http://stackoverflow.com/questions/6419618/perl-vivification-question-while-dereferencing-undefined-array-reference

http://stackoverflow.com/questions/2206836/why-does-perl-autovivify-in-this-case

stackoverflow наш друг :)


On Sep 30, 2011, at 5:38 PM, Иван Бессарабов wrote:

> Ок. А почему в списочном контексте происходит инициализация ссылки?
> 
> 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 mailing list
> moscow-pm на pm.org | http://moscow.pm.org

----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20110930/2b8b7f8d/attachment-0001.html>


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