Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Создать $tree->[2]->[1]->[3]->[0] из (2,1,3,0)


Автор: amg 25.10.2006, 14:40
Затык случился. Помогите!

Нужно создать структуру с элементом 
$tree->[2]->[1]->[3]->[0] 
из массива 
(2,1,3,0) 
содержащего соответствующие индексы 
(без использования eval).

Автор: JUmPER 25.10.2006, 15:01
Код

my @arr=(2,1,3,0);
my $tree=[];

my $cur=$tree;
my $num=push(@arr);

while(scalar(@arr)) {
    $cur->[$num]=[];
    $cur=$cur->[$num]
    $num=push(@arr);
    }

Автор: GoodBoy 25.10.2006, 15:06
JUmPER, PUSH???? А причём тут он???  Может вот так:
Код
my @arr = (2,1,3,0);
my $tree = [];

my $cur = $tree;
my $num = shift @arr;

while (@arr) {
    $cur->[$num] = [];
    $cur = $cur->[$num]
    $num = shift @arr;
}

Автор: amg 25.10.2006, 15:13
Замечательно!
Работает.
Большое спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)