Страница 1 из 1

[PERL] сравнить строку с массивом. или типа того

Добавлено: 2009-05-14 11:12:22
Alex Keda
есть некоторое пеерчисление элементов. реализовать можно как угодно - массивом, или через запяточку, например - тогде в переменной будет ($list, например же).
надо сравнить, что-то типа

Код: Выделить всё

if ($user eq $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
хэш, хэш! наше всё! :-D

Re: [PERL] сравнить строку с массивом. или типа того

Добавлено: 2009-05-14 11:49:14
Alex Keda
как мне его к этому прикрутить:

Код: Выделить всё

if ($user eq $list)

Re: [PERL] сравнить строку с массивом. или типа того

Добавлено: 2009-05-14 11:50:18
hizel

Код: Выделить всё

if( exists $list{$user}){
<doooooo>;
}

Re: [PERL] сравнить строку с массивом. или типа того

Добавлено: 2009-05-14 13:07:16
Alex Keda
обошёлся форичем - по условию срезал лишних =))

Re: [PERL] сравнить строку с массивом. или типа того

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

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 писал(а):как мне его к этому прикрутить:

Код: Выделить всё

if ($user eq $list)

Код: Выделить всё

my %items = map {$_ => 1} @$arr;

Re: [PERL] сравнить строку с массивом. или типа того

Добавлено: 2009-05-14 14:30:33
Alex Keda
та не. всё красиво получилось в итоге, просто само составление списка надо выпрямить - там либо регулярку хитрую рисовать, либо ещё чего надо...