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

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35420
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2009-05-14 11:12:22

есть некоторое пеерчисление элементов. реализовать можно как угодно - массивом, или через запяточку, например - тогде в переменной будет ($list, например же).
надо сравнить, что-то типа

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

if ($user eq $list)
======
объясню. сейчас условие выполняется для одного пользователя - по совпадению имени. а надо переделать кусок на выполнение условия дл некоего набора пользователей. набор могу сформировать как угодно
Убей их всех! Бог потом рассортирует...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

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

Непрочитанное сообщение hizel » 2009-05-14 11:34:43

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

foreach $u (@array){
  if($u eq $user){
    <dooooo>;
    break;
}
}
а лучше коллекцией сделай или как оно в пёрле.... хэшем вот!

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

if( exists $users_hash{$user}){
<doooooo>;
}
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35420
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2009-05-14 11:40:04

форичем перебрать и каждый сравнить любой дурак может =)
тока сравнений может быть слишком много - порядка 500x200x200 - боюсь тут даже перл загнётся...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

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

Непрочитанное сообщение hizel » 2009-05-14 11:44:57

хэш, хэш! наше всё! :-D
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35420
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2009-05-14 11:49:14

как мне его к этому прикрутить:

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

if ($user eq $list)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

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

Непрочитанное сообщение hizel » 2009-05-14 11:50:18

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

if( exists $list{$user}){
<doooooo>;
}
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35420
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2009-05-14 13:07:16

обошёлся форичем - по условию срезал лишних =))
Убей их всех! Бог потом рассортирует...

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

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

Непрочитанное сообщение hizel » 2009-05-14 13:14:07

те не программист не пупа!
я правда тоже, давеча чутка оптимизировал свой скриптик,он стал на одинаковом объёме данных вместо пяти минут пару секунд отрабатывать :oops:
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2009-05-14 14:06:40

lissyara писал(а):обошёлся форичем - по условию срезал лишних =))
ты сделал уже или нет?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35420
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2009-05-14 14:07:29

сделал
Убей их всех! Бог потом рассортирует...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2009-05-14 14:13:20

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;
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35420
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2009-05-14 14:30:33

та не. всё красиво получилось в итоге, просто само составление списка надо выпрямить - там либо регулярку хитрую рисовать, либо ещё чего надо...
Убей их всех! Бог потом рассортирует...