powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: grep для хеша
2 сообщений из 2, страница 1 из 1
Perl: grep для хеша
    #39838948
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой хеш:
Код: php
1.
$list->{'devices'} = { mac => { 'id'=>id, 'account'=>account}, ... };


Вместо mac, id, account подставляются соответствующие значения.
Мне нужно "отфильтровать" хеш, оставив только те элементы, у которых account совпадает с определенным значением, сохранив ключи.
Например так:
Код: php
1.
my $filter = {map { $_->{'id'} => {'id'=>$list->{'devices'}->{$_}->{'id'}, 'account'=>$list->{'devices'}->{$_}->{'account'}} } grep {($list->{'devices'}->{$_}->{'account'}//0) == 123} keys %{$list->{'devices'}}};


Но это очень громоздко. А можно ли такую фильтрацию сделать более компактно?
Например значения отфильтровать можно так:
Код: php
1.
my $filter = [grep {({$_}->{'account'}//0) == 123} values %{$list->{'devices'}}];


Но мне нужно также получить ключи отфильтрованных элементов.
...
Рейтинг: 0 / 0
Perl: grep для хеша
    #39839747
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: perl
1.
2.
3.
while (my($k,$v)=each%{$list->{devices}}) {
    print $k if $v->{account} == 123
}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: grep для хеша
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]