Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: разработка для Web > Как узнать есть ли скаляр в массиве? |
Автор: Vittaliy 24.10.2007, 10:19 |
Доброго времен и суток. С перлом пока на ВЫ. Но вот пишу функцию которая формирует строку параметров. Есть Хеш со всеми параметрами и есть масив с именами параметров которые должны присутствовать в результате. Где то встречал какую то встроеную операцию которая возвращает труе если скаляр входит в массив, а вспомнить не могу. Не хочится писать цикл если есть встроенная операция. Подскажите плиз. Заранее спасибо. |
Автор: GoodBoy 24.10.2007, 13:20 | ||
![]() |
Автор: Vittaliy 24.10.2007, 13:28 |
Блин. Обидно, а я вот был уверен что гдето такое мне попадалось. Ладно буду делать цикл. Спасибо за ответ. |
Автор: GoodBoy 24.10.2007, 14:18 | ||
ну это же Перл!!! ![]()
Понятно? Или пояснить? ![]() |
Автор: korob2001 24.10.2007, 17:46 | ||||||||
Ещё вариант:
Он же, только в более понятной форме:
Пример с поиском по шаблону:
Аналогичный предидущему, только вместо регулярного выражения используется index:
Только в последних двух примерах, нужно следить что-бы в искомой строке не встретился разделитель. |
Автор: Vittaliy 25.10.2007, 06:24 | ||
Сделал вот так:
|
Автор: Vittaliy 25.10.2007, 06:46 |
Мощная вещь оказывается grep. А склеивание имен в строку и дальнейший поиск по ней, на мой взгляд будет долго работать. |
Автор: korob2001 25.10.2007, 17:53 |
В данном случае использование grep излишне, так как мы используем последовательный поиск, т.е. мы идём по всему массиву от начала и до конца, где нам необходимо найти первое вхождение заданного елемента массива. grep будет каждый раз проходить по всему массиву, не в зависимости от того, в какой позиции был икомый елемент. Если конечно массив не будет большим, то можно оставить и grep, но если нет уверенности, что массив не разростётся, то всё же лучше заюзать цикл и прерывать его, если найден заданный елемент. С другой стороны, если изначально предполагается, что массив будет большим и уже тем более, если он отсортирован, то возможно стоит подумать об использовании не последовательного поиска, а бинарного. |