![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
nIkTo |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
Задача : если значение $name встречается (без учёта регистра) в массиве @array то сохраняем $name.
Результат :
Комментарии : 1. Первый вариант более удобен, но медленный. 2. Второй вариант быстрый но неудобен при расширении массива. 3. Устраивает и по скорости и по реализации, но этот вариант с учётом регистра =( подскажите вариант решения этой тривиальной задачки. спасибо. |
||||
|
|||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Это сообщение отредактировал(а) Pfailed - 3.4.2010, 14:32 |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Еще можно проверить модификацию 1-го варианта:
|
|||
|
||||
NuINu |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 131 Регистрация: 19.7.2008 Репутация: 5 Всего: 6 |
if ($name =~/^$_$/i) {
# сохраняем $name last; вообщето сохранять name глупо, оно и так известно, непонятна суть этих действий. Одно дело определить есть ли в массиве name и другое дело найти индекс элемента массива под которым этот элемент присутствует в массиве. но в любом случае не понятно зачем нужна быстрота поиска? если хотите найти быстро, и делать это часто ), пожертвуйте памятью, создайте хешь. если нужно быстро решить остановитесь на первом варианте и не парьтесь программированием остального. кстати программа тест2 к поиску в массиве не имеет никакого отношения. если хотите сделать что бы имела сгенерируйте регехп из массива. ну а тест3 просто не соответствует условиям задачи, и на чуть изменненых данных уже не работает. вот я тут чуть переделал и предложил свой вариант:
|
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
вот тут вот самый быстрый вариант ( в 5-10 раз быстрее чем map foreach grep exists (хеш) void) обсуждается (тестироваля в mod_perl)
http://forum.vingrad.ru/index.php?showtopi...t&p=2128080 там правда eq встроенный оператор, там нужно не нмого переделать, елси нужно без учета регистра... Это сообщение отредактировал(а) gcc - 4.4.2010, 01:56 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |