<!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>