2014-03-12 18 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