LINUX.ORG.RU

Perl. «Развернуть» хеш из строки.

 


0

3

Я сам в перле новичок, поэтому просьба не пинать за ламерский вопрос).

Как можно организовать универсальную функцию, которая «разворачивает» хеш из строки? Если уже есть что-то подобное - дайте ссылку.

Например, в искомую функцию передается строка:

"test1.test2"

и функция преобразует ее и делает запрос к хешу вида:

$my_hash{"test1"}->{"test2"}

Как, собственно говоря, реализовать нечто подобное?

Заранее спасибо.


Ответ на: комментарий от djnoob

sub ($@) { my $h = shift; foreach (@_) { if (exists $h->{ $_ }) { $h = $h->{ $_ } } else { return } } return $h }->($ref_hash, split «\\.», «test1.test2»)

arto ★★ ()
Ответ на: комментарий от djnoob
sub {
    my ($my_hash, $string) = @_;

    my %hash = split /\./, $string;
    while (my ($key, $value) = each %hash) {
        $my_hash{$key}->{$value};
    }
}
outtaspace ★★★ ()
$my_hash{$key}->{$value}->[0]->{$k}->{field}->[2];

такое можно писать без стрелок:

$my_hash{$key}{$value}[0]{$k}{field}[2];

bananym ()

use Pegex; Luke! Или как более навороченный вариант Marpa. Т.о. ты не только будешь «разворачивать» хэши, а сможешь делать еще более крутые штуки.

gh0stwizard ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.