Perl:Hash没有正确存储信息

时间:2011-12-15 17:59:34

标签: perl hash

我对perl中的哈希/数组有一个奇怪的问题,我正在阅读一些数据但是当我读出数据时,它似乎只记录了所有记录顶部的最后几个项目。

我将尝试演示下面的系统,这不是我的代码的精确副本,因为我使用的数据是敏感的:

$ data [6]的值可能会有所不同,这确认了错误

my @store = array();
my @data = array(columns1....1000);

# Overall loop
for(my $counter = 0; $i <= $2; $counter++) 
{
   # loop dataset
   for(my $record = 0; $record <= $100; $record++) 
   {


      $store[$counter][$record]->{$data[6]} = $data[100];


    }
}

2 个答案:

答案 0 :(得分:2)

正如codaddict在评论中指出的那样,循环索引中有一个错误 - $2是一个变量(可能是未定义的),而不是整数2.

但是,它通常是Perl中使用显式数组索引的代码味道。您应该以更自然的方式构建数据结构:

my @store = map {
    [
        map {
            # some logic here which fills in the second dimension of data        
        } (1..100);
    ]
} (1..2);

答案 1 :(得分:0)

听起来你正在存储对$data[$record]的引用而不是值。

如果您的数据存储了对标量的引用,那么$$data[$record]dereference,对于数组和哈希,@{data[$record]}%{data[$record]}类似。