Perl in_array

Программист на PHP спросил есть ли в Perl'e in_array (проверка на существование значения в массиве). Есть конечно! Только делается он так:

if (scalar grep {$_ eq $something} @something)
{

}

Причём, сравнивать можно не только по прямому условию, но и по регулярному выражению, например.

Поделиться
Отправить
 41   2003  
16 комментариев
kukutz 2003

Вот за это мы и не любим перл.

Евгений Степанищев (bolknote.ru) 2003

Комментарий для kukutz:

И то, за что любим его мы :)

Ray 2003

в данном случае из-за не соответсвия, открывающих к закрывающим, скобок?

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Ray:

Упс.. небрежно писал не заметил :)

kukutz 2003

Я ненавижу за синтаксис.

А ты, поди, любишь за мощь?

Евгений Степанищев (bolknote.ru) 2003

Комментарий для kukutz:

За какую такую мощь? Я его за синтаксис люблю.

Baka 2003

Если нужно (часто) проверять наличие элемента в массиве, надо пользоваться хэшем,
а не массивом. :-)

use strict;
my @something = qw(1 2 3);
my $something = 2;

{ # Вот так
my %hash; @hash{@something} = ();
if (exists $hash{$something}) {
    print «$something found\n»;
}
}

{ # Или так
my %hash; @hash{@something} = (1) x scalar @something;
if ($hash{$something}) {
    print «$something found\n»;
}
}

{ # Или так
my %hash = map {($_ => 1)} @something;
if ($hash{$something}) {
    print «$something found\n»;
}
}

Или с самого начала использовать хэш.

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Baka:

Кто говорил «часто»? Я говорил о реализации ф-и in_array. А Перл я тоже знаю.

Ray 2003

раз уж всё в курсе что такое in_array()
позволю себе наглость задать вопрос:

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Ray:

ага? какой?

Ray 2003

парсер весь код сожрал даже буковки не оставил, попробую ещё раз.

<code>

</code>

Ray 2003

ещё попыточка ;)
парсер весь код сожрал даже буковки не оставил, попробую ещё раз.

<code>

</code>

Ray 2003

ну вобщем так.. ;)

сакральное знание — как в комменты не регистрах постить код, мне не открылось.
На попытку удалить «накасяченную» мессагу получаю «u have no rights».
так что пока кроме мусора ничего запостить не смог.
Отошлю тебе по почте, не сочти за наглость. ;)

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Ray:

угу, но сегодня смотреть уже ничего не буду — завтра рано уезжать. А код постить просто — надо использовать < >

Юрий 2017

Прелесть какая: прошло 14 лет, интересно — написал ли Ray свой сакральный вопрос, ответил ли ему bolk ?

Евгений Степанищев (bolknote.ru) 2017

Комментарий для Юрий:

:)) Уже и движок «Регистра», про который вопрос, давно помер и используется, на одном-единственном сайте: http://kvnru.ru

Популярное