我对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];
}
}
答案 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]}
类似。