一旦我离开for循环,我的多维数组哈希中的一些变量就会消失。变量在循环中一个接一个地正确打印,但是当我在循环之外打印任何项目时,除了第一个项目外,它始终为空。
for my $y (0..$last_row - 2) {
my $mlid = $Sheet->Cells($y+2, 1)->{'Value'};
my @a = ();
$a[0] = $Sheet->Cells($y+2, 3)->{'Value'};
$a[1] = $Sheet->Cells($y+2, 4)->{'Value'};
$a[2] = $Sheet->Cells($y+2, 6)->{'Value'};
$a[3] = $Sheet->Cells($y+2, 7)->{'Value'};
$a[4] = $Sheet->Cells($y+2, 8)->{'Value'};
push @{$longHash{$mlid}}, [ @a ];
print "Item in Array in Hash: $longHash{$mlid}[1][0]\n"; #this prints nothing
if (exists $numPeople{$mlid}){
$numPeople{$mlid}++;
}else{
$numPeople{$mlid} = 0;
$numPeople{$mlid}++;
}
}
print "Item in Array in Hash: $longHash{7202}[0][0]\n"; #this prints properly
print "Item in Array in Hash: $longHash{7202}[1][0]\n"; #this prints nothing
行为应该是:
我有一个哈希。单个 mlid 的键给出了一个数组(代表一个人)。在每个数组中,应该有另一个数组,其中 0-4 索引是从我正在阅读的 Excel 文件中定义的。
因此,要从 mlid 7202、第 7 个人和 Excel 中的第 4 列获取数据,我应该输入 $longHash{7202}[7][1](因为我将第 4 列映射到大批。)