exists в @_

und3f d3fin3 at gmail.com
Wed Aug 10 07:11:24 PDT 2011


Вырезка из perldoc -f exists

               exists may also be called on array elements, but its behavior
               is much less obvious, and is strongly tied to the use of
               "delete" on arrays.  *Be aware* that calling exists on array
               values is deprecated and likely to be removed in a future
               version of Perl.

Также проверка на неопределенное значение `defined $_[$i]' не тоже самое что проверка существование значения.
Для массива важно помнить что элементы в нем идут последовательно и пробелов быть не может, поэтому проверять наличие элементов стоит через количество элементов в массиве.

On 10.08.2011 17:04, Oleg Alistratov <ali at ali.org.ua> wrote:
> Привет,
>
> я, конечно, понимал, что @_ массив крайне хитрожопый,
> да и не массив вообще, но сегодня оно меня выбило из колеи.
>
> Вот код: http://ideone.com/0BeFd
> там же и результат выполнения.
>
> exists для элемента @_ не отрабатывает нормально, если @_
> ассайнится не на честный список, а на последовательность параметров.
>
> Подтверждается в перлах 8, 10, 12.
>
> Явного описания в документации не нашел, объяснение придумать можно,
> то есть за баг я такое поведение не считаю… но все равно неприятно.
> Тем более, что вылилось у меня оно на уровне "не вызывается колбек
> для обновления значения в кеше при протухании элемента кеша с последующим
> вызовом очистки по алгоритму LRU" :) соответственно, полтора часа отладки
> и матюгов.
>
> Короче, камрады, знайте, если еще не. Я вот не знал.
>
>
> --
> Олег Алистратов
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/kiev-pm/attachments/20110810/a634501a/attachment.html>


More information about the Kiev-pm mailing list