forループを離れるとすぐに、多次元配列のハッシュ内のいくつかの変数が消えます。変数はループ内で 1 つずつ正しく出力されますが、ループの外でアイテムを出力すると、最初のアイテムを除いて常に空になります。
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 のキーは、(人を表す) 配列を提供します。各配列には、私が読んでいる Excel ファイルから 0 ~ 4 のインデックスが定義されている別の配列が必要です。
したがって、mlid 7202、7 人目、および Excel の 4 列目からデータを取得するには、$longHash{7202}[7][1] を配置する必要があります (4 列目を配列。)