Не нужно просто заморачиваться там, где это не нужно, "милейший" :-)

2011/10/1 Oleg Kostyuk <[email protected]>

> А как же без использования ref можно безопасно "разименовать
> переменную и Получить массив или хэш", когда "не известен тип входной
> структуры"?
>
> (то что в кавычках - цитаты)
>
>
> 1 октября 2011 г. 11:43 пользователь Denis Fedoseev
> <[email protected]> написал:
> > Это паранойя в том плане  - что если тебе нужно разименовать переменную и
> Получить массив или хэш - то смысла в такой проверке нет. Если тебе нужно
> Проверить что ссылка это массив или хэш - то тогда надо пользоваться ref eq
> 'ARRAY'
> >
> >
> > On Sep 30, 2011, at 11:52 PM, Oleg Kostyuk wrote:
> >
> >> Про перегрузку соглашусь, но почему использование ref eq 'ARRAY' - это
> >> паранойя? Это сплошь и рядом используется, например в том же
> >> DBIx::Class. Обоснуйте-ка, милейший!
> >>
> >> 30 сентября 2011 г. 16:51 пользователь Анатолий Шарифулин
> >> <[email protected]> написал:
> >>> Вместо:
> >>> @$t2 = @$t3;
> >>> обычно пишу:
> >>> $t2 = [ @$t3 ];
> >>>
> >>> Ну и: нужно быть уверенным в том, что ты разыменовываешь, если не
> уверен, то
> >>> @{ $t2 || [] };
> >>> Только не нужно быть пароноиком и использовать ref eq 'ARRAY' или
> >>> использовать перегрузку, когда не известен тип входной структуры.
> >>> Такая практика меня ещё ни разу не привела к подобным ошибкам.
> >>>
> >>> 2011/9/30 Alexander Onokhov <[email protected]>
> >>>>
> >>>> Да про lvalue хорошо
> >>>>
> >>>> @$t2 = (1,2,3);  # нет ошибки
> >>>>
> >>>>
> >>>> On Fri, Sep 30, 2011 at 4:42 PM, Dmitry Karpich <[email protected]>
> wrote:
> >>>>>
> >>>>>
> >>>>>
> 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 пользователь Анатолий Шарифулин
> >>>>> <[email protected]> написал:
> >>>>>
> >>>>> Потому что разный контекст.
> >>>>>
> >>>>> foreach (scalar @$t1) {}
> >>>>>
> >>>>> Вот так будет идентично ифу.
> >>>>>
> >>>>>
> >>>>> 2011/9/30 Andrew Shitov <[email protected]>
> >>>>>
> >>>>> Потому что $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 Иван Бессарабов <[email protected]>:
> >>>>>
> >>>>> Я не могу понять из-за чего происходит такое поведение.
> >>>>>
> >>>>> Покажите, пожалуйста, кусок доки где объянено, почему так.
> >>>>>
> >>>>>
> >>>>> #!/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
> >>>>>
> >>>>> [email protected] | http://moscow.pm.org
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>>
> >>>>> Andrew Shitov
> >>>>>
> >>>>>
> ______________________________________________________________________
> >>>>>
> >>>>> [email protected] | http://shitov.ru
> >>>>>
> >>>>> --
> >>>>>
> >>>>> Moscow.pm mailing list
> >>>>>
> >>>>> [email protected] | http://moscow.pm.org
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>>
> >>>>> С уважением,
> >>>>>
> >>>>>  Анатолий Шарифулин.
> >>>>>
> >>>>> --
> >>>>>
> >>>>> Moscow.pm mailing list
> >>>>>
> >>>>> [email protected] | http://moscow.pm.org
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Moscow.pm mailing list
> >>>>> [email protected] | http://moscow.pm.org
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Moscow.pm mailing list
> >>>>> [email protected] | http://moscow.pm.org
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Alexander
> >>>>
> >>>> --
> >>>> Moscow.pm mailing list
> >>>> [email protected] | http://moscow.pm.org
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> С уважением,
> >>>  Анатолий Шарифулин.
> >>>
> >>> --
> >>> Moscow.pm mailing list
> >>> [email protected] | http://moscow.pm.org
> >>>
> >>>
> >>
> >>
> >>
> >> --
> >> Sincerely yours,
> >> Oleg Kostyuk (CUB-UANIC)
> >> --
> >> Moscow.pm mailing list
> >> [email protected] | http://moscow.pm.org
> >
> > --
> > Moscow.pm mailing list
> > [email protected] | http://moscow.pm.org
> >
>
>
>
> --
> Sincerely yours,
> Oleg Kostyuk (CUB-UANIC)
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>



-- 
С уважением,
 Анатолий Шарифулин.
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить