2014-02-12 79 views
0

如何更改數組的名稱在它的另一項目在循環更改新的數組名

@array=("1, 2, 3, 4", "5, 6, 7, 8"); 
$c=0; 
foreach $x(@array){ 
     push ("@value_$c", split(", ", $x)); 
     $c++;} 

所以輸出應該是這樣的地方:

@value_0=(1,2,3,4) 
@value_1=(5,6,7,8) 

PS:我知道這是不正確的寫 「@ VALUE_ $ C」

回答

6

使用哈希,

use strict; 
use warnings; 
my @array = ("1, 2, 3, 4", "5, 6, 7, 8"); 

my %hash; 
foreach my $c (0 .. $#array) { 

    push @{$hash{"value_$c"}}, split(/, /, $array[$c]); 
} 

use Data::Dumper; 
print Dumper \%hash; 

輸出

$VAR1 = { 
     'value_1' => [ 
        '5', 
        '6', 
        '7', 
        '8' 
        ], 
     'value_0' => [ 
        '1', 
        '2', 
        '3', 
        '4' 
        ] 
    }; 

,或者使用二維陣列,

my @result; 
foreach my $c (0 .. $#array) { 

    push @result, [ split(/, /, $array[$c]) ]; 
} 
+0

雖然這是最可能的溶液中的OP慾望,我建議一個陣列或多個陣列將是更合適,'list_idx = > list_value'數據結構設計很少需要。 – Chris

+1

@Chris檢查更新 –