powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl - можно изменить hashref на scalar по ссылке?
6 сообщений из 6, страница 1 из 1
Perl - можно изменить hashref на scalar по ссылке?
    #38350479
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
sub proc_options($)
{
        my $hash = shift;
        my $cnt = grep {ref($_)} (values(%$hash));
        if ($cnt)
        {
                while (my ($k,$v) = each %$hash)
                {
                        &proc_options($v);
                        $hash->{$k} = $v->{'VALUE'} if (exists($v->{'VALUE'}));
                }
                return;
        }
        $hash->{'VALUE'} = $hash->{'VALUE_'.$hash->{'DATATYPE'}};
        delete $hash->{$_} foreach(grep {/VALUE_/} keys(%$hash));
        delete $hash->{$_} foreach(qw(SECTION NAME DISPLAY));
}


Этот код заменяет хеши нижнего уровня на их значения.
Можно ли этот код переписать примерно так?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
sub proc_options($)
{
        my $hash = shift;
        my $cnt = grep {ref($_)} (values(%$hash));
        if ($cnt)
        {
                &proc_options($v) foreach(values(%$hash));
                return;
        }
        ?$hash = $hash->{'VALUE_'.$hash->{'DATATYPE'}};
}



Что нужно указать вместо знака вопроса?
Если просто указать $hash=$hash{'VALUE'}, то присвоение не происходит.
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Perl - можно изменить hashref на scalar по ссылке?
    #38350985
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

У нас давно hash_copy и hash_merge в XS"ах лежит.
...
Рейтинг: 0 / 0
Perl - можно изменить hashref на scalar по ссылке?
    #38351014
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это разве тут применимо?
Грубо говоря, у меня есть $href=$hash{$key} и мне нужно заменить значение хеша на скаляр. Я это делаю через $hash{$key}=$scalar. А можно ли тоже самое сделать, используя $href ?
...
Рейтинг: 0 / 0
Perl - можно изменить hashref на scalar по ссылке?
    #38353220
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Так и спрашивайте...

$href->{$key} = $scalar

Читайте букварь по Перлу.
...
Рейтинг: 0 / 0
Perl - можно изменить hashref на scalar по ссылке?
    #38353750
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Warstone$href->{$key} = $scalar
Причем тут $href? $href это не ссылка на хеш $hash. Это ссылка на значение хеша $hash, которое является ссылкой на хеш.
У меня есть %hash = ('key1'=>{'value'=>'value1', 'type'=>'type1'}, 'key2'=>{'value'=>'value2', 'type'=>'type2'}).
А мне нужно из него получить %hash = ('key1'=>'value1', 'key2'=>'value2').

Сейчас я это делаю, выполняя $hash{'key1'} = $hash{'key1'}->{'value'}, т.е. имея доступ к хешу.
Можно ли это сделать в процедуре, куда аргументом передается значение хеша?
...
Рейтинг: 0 / 0
Perl - можно изменить hashref на scalar по ссылке?
    #38354634
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Warstone$href->{$key} = $scalar
Причем тут $href? $href это не ссылка на хеш $hash. Это ссылка на значение хеша $hash, которое является ссылкой на хеш.Бред не несите. То что вы назваете href'ом это не href это scalar. href - это \%hash. Это написано в букваре. Читайте.[/SRC]
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl - можно изменить hashref на scalar по ссылке?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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