2010-07-07 76 views
-3

好吧..這個工程...perl的字符串分割到二維數組

sub getApSrvs 
{ 
my %apsrv; 
my $cluster; 

    foreach $cluster (getClusters()) 
    { 
    $apsrv{$cluster} = [split('\s+', `/$cluster/bin/gethosts -t app|sort -u`)]; 
    } 
return %apsrv; 
} 

...現在怎麼在火腿三明治我得到這個打印像這樣$集羣 - > $主機名

好吧,我說:

my %apsrv = getApSrvs(); 
for my $cluster (keys %apsrv) { 
print "$cluster -> $apsrv{$cluster}\n"; 
} 

和我...

qboc22 - >陣列(0x9111618)

qboc5 - >陣列(0x9111504)

qboc32 - >陣列(0x90e20cc)

qboc28 - >陣列(0x90e1d28)

qboc30 - > ARRAY (0x90e1f38)

qboc23 - >陣列(0x9111540)

qboc27 - >陣列(0x911181c)

qboc29 - >陣列(0x91115ac)

QBO - >陣列(0x90e2294)

+0

什麼一直是你的問題? – Daenyth 2010-07-07 20:16:46

+1

沒有具體問題沒有答案 - 你的代碼不工作?數據看起來像是由split分析的? – Ether 2010-07-07 20:17:45

+0

'split'返回一個數組,因此您需要爲該數組指定一個引用:'$ apsrv {$ cluster} = [split(...)]'。否則,我不知道你的問題是什麼。 – mob 2010-07-07 20:18:50

回答

0
my %apsrv = getApSrvs(); 
for my $cluster (keys %apsrv) { 
    print "$cluster -> $apsrv{$cluster}\n"; 
} 

您將要打印,如果順序很重要,之前的按鍵(sort keys %apsrv)排序。

1

$ apsrv {$ CLUSTER}是一個數組的引用,所以如果你想打印它的內容,你可以這樣做:你需要幫助

my %apsrv = getApSrvs(); 
for my $cluster (keys %apsrv) { 
    print "$cluster -> ", join(', ', @$apsrv{$cluster}), "\n"; 
}