powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl - рекурсивная обработка в одну строку
4 сообщений из 4, страница 1 из 1
Perl - рекурсивная обработка в одну строку
    #38350359
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть примерно такой хеш:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
-key1=
  -key2=
    -key3=value3
    -key4=value4
  -key5=
      -key6
        -key7=value7
        -key8=value8
то есть хеш, значения которого являются либо скалярами, либо другим таким же хешем, уровень вложенности неограниченный.
Нужно определенным образом обработать все скалярные значения, в зависимости от других значений на этом же уровне.
К примеру, если key4=abc, то key3 нужно удалить.

Можно написать функцию, которой передается хеш, значения которого проверяются и если они hashref, то для них рекурсивно вызывается эта же функция.

А можно ли вместо функции это красиво сделать в одной строке?

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Perl - рекурсивная обработка в одну строку
    #38350392
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас задача решается примерно так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$options = $dbh->selectall_hashref("select * from OPTIONS", [qw(SECTION NAME)]);
&proc_options($options);
...
sub proc_options($)
{
        my $hash = shift;
        my $cnt = grep {ref($_)} (values(%$hash));
        if ($cnt)
        {
                &proc_options($_) foreach (values(%$hash));
                return;
        }
        $hash->{'VALUE'} = $hash->{'VALUE_'.$hash->{'DATATYPE'}};
        delete $hash->{$_} foreach(grep {/VALUE_/} keys(%$hash));
}



Но хочется сделать короче и красивее.
...
Рейтинг: 0 / 0
Perl - рекурсивная обработка в одну строку
    #38350399
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Но хочется сделать короче и красивее.
Или другими словами, если хеши вложены друг в друга, нужно обработать хеши нижнего уровня.
...
Рейтинг: 0 / 0
Perl - рекурсивная обработка в одну строку
    #38350986
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.А можно ли вместо функции это красиво сделать в одной строке?Через хвостовую рекурсию.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl - рекурсивная обработка в одну строку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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