|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Rostislav Chebykin 2:5020/400 06 May 2004 01:41:19 To : All Subject : Проверка на вхождение в массив --------------------------------------------------------------------------------
У меня вопрос.
Есть массив, допустим:
my @words = ("one", "two", "four", "eight", "sixteen", "thirty-two");
Есть скаляр, допустим:
my $secret = "zero";
Hужно проверить, входит ли этот скаляр в этот массив.
Я делаю это следующим образом:
if ("@words" =~ /\b$secret\b/) {
... что-то делать ...
}
Хорошо ли такое решение? Или в Perl принято как-то по-другому?
И еще - несколько стратегических вопросов. Может быть, массив тут вовсе не
нужен...
Исходная задача состоит в следующем. Есть некий параметр, и есть список
допустимых значений этого параметра. Программа должна проверять, входит ли
некое значение в этот список.
(Для определенности: допустим, параметр называется lang, а список допустимых
значений - "en", "ru", "fr", "uk" и так далее. В программу извне поступает
некоторое значение, и требуется установить, есть ли это значение в этом
списке.)
Массив здесь не совсем подходит с логической точки зрения, так как порядок
следования языков не имеет значения. То есть с логической точки зрения
("en", "ru", "fr", ... ) и ("ru", "fr", "en", ... ) - это одно и то же.
Я еще думал в сторону хэшей, но тогда придется делать хэш с одними ключами,
без значений. А это какое-то извращение.
Идеально подошла бы структура типа "множество", но таких, насколько мне
известно, в Perl'е нет.
Так как же быть?
--
Rostislav Chebykin <philigon@master.elserv.msk.su>
http://www.philigon.ru/
http://www.livejournal.com/users/philigon/
--- ifmail v.2.15dev5.3
* Origin: Kender's Nest (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/65774e07c629.html, оценка из 5, голосов 10
|