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