2014-03-12 16 views
0

我想用哈希来生成一个无序列表,我可以在jstree中进一步使用。但是这个数组只能从已经传递的数组中产生。从数组生成无序列表哈希

my @array = ("New Order","Recurring Order","Previously Cancelled Order"); 

我所要的输出看起来像

$data = { 
     "New Order" => { 
         "Recurring Order" =>{ 
               Previously cancelled Order = 1 
              } 
         } 
    }; 

我可以简单地做

my $data{$array[0]}{$array[1]}{$array[2]} = 1 

但阵列可以是个变量,因此它比稍微复杂一点那。我正在考虑递归,但我一直坐在这里最后一个小时试图弄清楚这一点

回答

4

这将生成您定义它的数据结构。不知道为什么你会想要它。如果你只是想随机化你的数组,然后用List::Util;

use List::Util qw(shuffle); 

my @newOrder = shuffle @input; 
+0

这仅仅是一个完美的解决方案。我只是需要它,因为有一个复杂的数据库查询,需要使用数组作为列的列表进行简化,每个增量数组元素都是我必须使用该数据创建的jstree级别。 谢谢,这是完美的。 – user2583714

1
sub recursive { 
    my $v = shift @_; 
    return @_>1 ? { $v => recursive(@_) } : { $v => @_ }; 
} 

my @array = ("New Order","Recurring Order","Previously Cancelled Order"); 
use Data::Dumper; print Dumper recursive(@array, 1); 

输出

$VAR1 = { 
     'New Order' => { 
         'Recurring Order' => { 
               'Previously Cancelled Order' => 1 
              } 
        } 
    }; 
+0

谢谢。这真的很有帮助。完全整理我的问题 – user2583714