在循环中更改新数组名称

时间:2014-02-12 08:59:26

标签: arrays perl

如何更改数组的名称以在其中添加另一项

 @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”

是不正确的

1 个答案:

答案 0 :(得分: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]) ];
}