<div>Олег, какой Вы настырный :-)</div><div><br></div>Специфицируйте входные данные и вам не придётся писать лишние проверки.<div>Если в сабу приходит только ссылка на массив, то не стоит писать код: ref eq 'ARRAY'</div>
<div>Это условие всегда будет тру. Я это имел в виду.</div><div><br></div><div><br><div class="gmail_quote">2011/10/3 Oleg Kostyuk <span dir="ltr"><<a href="mailto:cub.uanic@gmail.com">cub.uanic@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Вопрос был не о том, "а каким другим способом это можно проверить".<br>
Возможно, формулировка была не однозначна, но имелось ввиду следующее:<br>
как же вообще можно <cite>безопасно "разименовать переменную и<br>
<div class="im">Получить массив или хэш", когда "не известен тип входной<br>
</div>структуры"?</cite> - ведь если данные по ссылке и разыменование не<br>
совпадут по типам, то будет сгенерировано исключение.<br>
<br>
<br>
3 октября 2011 г. 12:21 пользователь oleg alexeenkov <<a href="mailto:proler@gmail.com">proler@gmail.com</a>> написал:<br>
<div><div></div><div class="h5">> Oleg Kostyuk <<a href="mailto:cub.uanic@gmail.com">cub.uanic@gmail.com</a>> писал(а) в своём письме Sat, 01 Oct 2011<br>
> 23:15:50 +0400:<br>
><br>
> UNIVERSAL::isa($a, 'HASH')<br>
><br>
>> А как же без использования ref можно безопасно "разименовать<br>
>> переменную и Получить массив или хэш", когда "не известен тип входной<br>
>> структуры"?<br>
>><br>
>> (то что в кавычках - цитаты)<br>
>><br>
>><br>
>> 1 октября 2011 г. 11:43 пользователь Denis Fedoseev<br>
>> <<a href="mailto:denis.fedoseev@gmail.com">denis.fedoseev@gmail.com</a>> написал:<br>
>>><br>
>>> Это паранойя в том плане  - что если тебе нужно разименовать переменную и<br>
>>> Получить массив или хэш - то смысла в такой проверке нет. Если тебе нужно<br>
>>> Проверить что ссылка это массив или хэш - то тогда надо пользоваться ref eq<br>
>>> 'ARRAY'<br>
>>><br>
>>><br>
>>> On Sep 30, 2011, at 11:52 PM, Oleg Kostyuk wrote:<br>
>>><br>
>>>> Про перегрузку соглашусь, но почему использование ref eq 'ARRAY' - это<br>
>>>> паранойя? Это сплошь и рядом используется, например в том же<br>
>>>> DBIx::Class. Обоснуйте-ка, милейший!<br>
>>>><br>
>>>> 30 сентября 2011 г. 16:51 пользователь Анатолий Шарифулин<br>
>>>> <<a href="mailto:sharifulin@gmail.com">sharifulin@gmail.com</a>> написал:<br>
>>>>><br>
>>>>> Вместо:<br>
>>>>> @$t2 = @$t3;<br>
>>>>> обычно пишу:<br>
>>>>> $t2 = [ @$t3 ];<br>
>>>>><br>
>>>>> Ну и: нужно быть уверенным в том, что ты разыменовываешь, если не<br>
>>>>> уверен, то<br>
>>>>> @{ $t2 || [] };<br>
>>>>> Только не нужно быть пароноиком и использовать ref eq 'ARRAY' или<br>
>>>>> использовать перегрузку, когда не известен тип входной структуры.<br>
>>>>> Такая практика меня ещё ни разу не привела к подобным ошибкам.<br>
>>>>><br>
>>>>> 2011/9/30 Alexander Onokhov <<a href="mailto:ccnweb@gmail.com">ccnweb@gmail.com</a>><br>
>>>>>><br>
>>>>>> Да про lvalue хорошо<br>
>>>>>><br>
>>>>>> @$t2 = (1,2,3);  # нет ошибки<br>
>>>>>><br>
>>>>>><br>
>>>>>> On Fri, Sep 30, 2011 at 4:42 PM, Dmitry Karpich <<a href="mailto:meettya@gmail.com">meettya@gmail.com</a>><br>
>>>>>> wrote:<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> <a href="http://stackoverflow.com/questions/6419618/perl-vivification-question-while-dereferencing-undefined-array-reference" target="_blank">http://stackoverflow.com/questions/6419618/perl-vivification-question-while-dereferencing-undefined-array-reference</a><br>

>>>>>>><br>
>>>>>>><br>
>>>>>>> <a href="http://stackoverflow.com/questions/2206836/why-does-perl-autovivify-in-this-case" target="_blank">http://stackoverflow.com/questions/2206836/why-does-perl-autovivify-in-this-case</a><br>

>>>>>>> stackoverflow наш друг :)<br>
>>>>>>><br>
>>>>>>> On Sep 30, 2011, at 5:38 PM, Иван Бессарабов wrote:<br>
>>>>>>><br>
>>>>>>> Ок. А почему в списочном контексте происходит инициализация ссылки?<br>
>>>>>>><br>
>>>>>>> 30 сентября 2011 г. 17:32 пользователь Анатолий Шарифулин<br>
>>>>>>> <<a href="mailto:sharifulin@gmail.com">sharifulin@gmail.com</a>> написал:<br>
>>>>>>><br>
>>>>>>> Потому что разный контекст.<br>
>>>>>>><br>
>>>>>>> foreach (scalar @$t1) {}<br>
>>>>>>><br>
>>>>>>> Вот так будет идентично ифу.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> 2011/9/30 Andrew Shitov <<a href="mailto:andy@shitov.ru">andy@shitov.ru</a>><br>
>>>>>>><br>
>>>>>>> Потому что $t1 станет другим после foreach, а $t2 не станет :-)<br>
>>>>>>><br>
>>>>>>> $ perl -E'use strict; use Data::Dumper; my $t; print Dumper($t); for<br>
>>>>>>><br>
>>>>>>> (@$t) {}; print Dumper($t);'<br>
>>>>>>><br>
>>>>>>> $VAR1 = undef;<br>
>>>>>>><br>
>>>>>>> $VAR1 = [];<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> 2011/9/30 Иван Бессарабов <<a href="mailto:ivan@bessarabov.ru">ivan@bessarabov.ru</a>>:<br>
>>>>>>><br>
>>>>>>> Я не могу понять из-за чего происходит такое поведение.<br>
>>>>>>><br>
>>>>>>> Покажите, пожалуйста, кусок доки где объянено, почему так.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> #!/usr/bin/perl<br>
>>>>>>><br>
>>>>>>> use strict;<br>
>>>>>>><br>
>>>>>>> use warnings;<br>
>>>>>>><br>
>>>>>>> use 5.010;<br>
>>>>>>><br>
>>>>>>> use Data::Dumper;<br>
>>>>>>><br>
>>>>>>> my ($t1, $t2);<br>
>>>>>>><br>
>>>>>>> foreach (@$t1) {} # почему-то не вызывает ошибку<br>
>>>>>>><br>
>>>>>>> say Dumper $t1;<br>
>>>>>>><br>
>>>>>>> say '' if @$t2; # вызывает ошибку, как и ожидалось<br>
>>>>>>><br>
>>>>>>> say 'end';<br>
>>>>>>><br>
>>>>>>> --<br>
>>>>>>><br>
>>>>>>> Moscow.pm mailing list<br>
>>>>>>><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>
>>>>>>> --<br>
>>>>>>><br>
>>>>>>> Andrew Shitov<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> ______________________________________________________________________<br>
>>>>>>><br>
>>>>>>> <a href="mailto:andy@shitov.ru">andy@shitov.ru</a> | <a href="http://shitov.ru" target="_blank">http://shitov.ru</a><br>
>>>>>>><br>
>>>>>>> --<br>
>>>>>>><br>
>>>>>>> Moscow.pm mailing list<br>
>>>>>>><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>
>>>>>>><br>
>>>>>>> С уважением,<br>
>>>>>>><br>
>>>>>>>  Анатолий Шарифулин.<br>
>>>>>>><br>
>>>>>>> --<br>
>>>>>>><br>
>>>>>>> Moscow.pm mailing list<br>
>>>>>>><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>
>>>>>>> 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>
>>>>>>> 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>
>>>>>> --<br>
>>>>>> Alexander<br>
>>>>>><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>
>>>>> --<br>
>>>>> С уважением,<br>
>>>>>  Анатолий Шарифулин.<br>
>>>>><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>
>>>><br>
>>>> --<br>
>>>> Sincerely yours,<br>
>>>> Oleg Kostyuk (CUB-UANIC)<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>
>>> 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>
> 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>
--<br>
Sincerely yours,<br>
Oleg Kostyuk (CUB-UANIC)<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>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>С уважением,<br> Анатолий Шарифулин.<br>
</div>