Страница 1 из 1
[PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 11:12:22
Alex Keda
есть некоторое пеерчисление элементов. реализовать можно как угодно - массивом, или через запяточку, например - тогде в переменной будет ($list, например же).
надо сравнить, что-то типа
======
объясню. сейчас условие выполняется для одного пользователя - по совпадению имени. а надо переделать кусок на выполнение условия дл некоего набора пользователей. набор могу сформировать как угодно
Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 11:34:43
hizel
Код: Выделить всё
foreach $u (@array){
if($u eq $user){
<dooooo>;
break;
}
}
а лучше коллекцией сделай или как оно в пёрле.... хэшем вот!
Код: Выделить всё
if( exists $users_hash{$user}){
<doooooo>;
}
Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 11:40:04
Alex Keda
форичем перебрать и каждый сравнить любой дурак может

тока сравнений может быть слишком много - порядка 500x200x200 - боюсь тут даже перл загнётся...
Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 11:44:57
hizel
хэш, хэш! наше всё!

Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 11:49:14
Alex Keda
как мне его к этому прикрутить:
Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 11:50:18
hizel
Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 13:07:16
Alex Keda
обошёлся форичем - по условию срезал лишних

)
Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 13:14:07
hizel
те не программист не пупа!
я правда тоже, давеча чутка оптимизировал свой скриптик,он стал на одинаковом объёме данных вместо пяти минут пару секунд отрабатывать

Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 14:06:40
ProFTP
lissyara писал(а):обошёлся форичем - по условию срезал лишних

)
ты сделал уже или нет?
Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 14:07:29
Alex Keda
сделал
Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 14:13:20
ProFTP
lissyara писал(а):форичем перебрать и каждый сравнить любой дурак может

тока сравнений может быть слишком много - порядка 500x200x200 - боюсь тут даже перл загнётся...
а ты пробовал оно долго будет?
1) данные отсортипрованные? отсортировать можешь?
можно бинарные поиск
2)
http://www.opennet.ru/docs/RUS/perl_obz ... ntium.html
Код: Выделить всё
Обработка запросов
Суперпозиции могут так-же применяться для поиска строки в массиве строк. Например, чтобы определить, появляется ли данная строка $target в массиве строк @db:
use Quantum::Superpositions BINARY => ["CORE::index"];
$found = index(any(@db), $target) >= 0;
Определить, какая из строк базы данных содержат $target:
sub contains_str {
if (index($dbstr, $target) >= 0) {
return $dbstr;
}
}
$found = contains_str(any(@db), $target);
@matches = eigenstates $found;
Сравнение происходит гораздо быстрее, чем это умеет делать база данных, чтобы найти единственную строчку в любой из набора в базе.
sub contains_targ {
if (index($dbstr, $target) >= 0) {
return $target;
}
}
$found = contains_targ($string, any(@targets));
@matches = eigenstates $found;
Или в каждой одновременно
$found = contains_targ($string, all(@targets));
@matches = eigenstates $found;
3) посмотри тут _http://forum.vingrad.ru/forum/topic-250686/0.html
lissyara писал(а):как мне его к этому прикрутить:
Re: [PERL] сравнить строку с массивом. или типа того
Добавлено: 2009-05-14 14:30:33
Alex Keda
та не. всё красиво получилось в итоге, просто само составление списка надо выпрямить - там либо регулярку хитрую рисовать, либо ещё чего надо...