<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Вырезка из perldoc -f exists<br>
    <br>
                   exists may also be called on array elements, but its
    behavior<br>
                   is much less obvious, and is strongly tied to the use
    of<br>
                   "delete" on arrays.  <b>Be aware</b> that calling
    exists on array<br>
                   values is deprecated and likely to be removed in a
    future<br>
                   version of Perl.<br>
    <br>
    Также проверка на неопределенное значение `defined $_[$i]' не тоже
    самое что проверка существование значения.<br>
    Для массива важно помнить что элементы в нем идут последовательно и
    пробелов быть не может, поэтому проверять наличие элементов стоит
    через количество элементов в массиве.<br>
    <br>
    On 10.08.2011 17:04, Oleg Alistratov <a class="moz-txt-link-rfc2396E" href="mailto:ali@ali.org.ua"><ali@ali.org.ua></a> wrote:
    <blockquote cite="mid:4E429003.50804@ali.org.ua" type="cite">
      <pre wrap="">
Привет,

я, конечно, понимал, что @_ массив крайне хитрожопый,
да и не массив вообще, но сегодня оно меня выбило из колеи.

Вот код: <a class="moz-txt-link-freetext" href="http://ideone.com/0BeFd">http://ideone.com/0BeFd</a>
там же и результат выполнения.

exists для элемента @_ не отрабатывает нормально, если @_
ассайнится не на честный список, а на последовательность параметров.

Подтверждается в перлах 8, 10, 12.

Явного описания в документации не нашел, объяснение придумать можно,
то есть за баг я такое поведение не считаю… но все равно неприятно.
Тем более, что вылилось у меня оно на уровне "не вызывается колбек
для обновления значения в кеше при протухании элемента кеша с последующим
вызовом очистки по алгоритму LRU" :) соответственно, полтора часа отладки
и матюгов.

Короче, камрады, знайте, если еще не. Я вот не знал.


--
Олег Алистратов
</pre>
    </blockquote>
  </body>
</html>