我有一個解析Excel文件的Perl腳本,它執行以下操作:它爲列A中的每個值計數,它在列B中具有的元素數量,該腳本如下所示:使用perl對哈希值進行hash散列
use strict;
use warnings;
use Spreadsheet::XLSX;
use Data::Dumper;
use List::Util qw(sum);
my $col1 = 0;
my %hash;
my $excel = Spreadsheet::XLSX->new('inout_chartdata_ronald.xlsx');
my $sheet = ${ $excel->{Worksheet} }[0];
$sheet->{MaxRow} ||= $sheet->{MinRow};
my $count = 0;
# Iterate through each row
foreach my $row ($sheet->{MinRow}+1 .. $sheet->{MaxRow}) {
# The cell in column 1
my $cell = $sheet->{Cells}[$row][$col1];
if ($cell) {
# The adjacent cell in column 2
my $adjacentCell = $sheet->{Cells}[$row][ $col1 + 1 ];
# Use a hash of hashes
$hash{ $cell->{Val} }{ $adjacentCell->{Val} }++;
}
}
print "\n", Dumper \%hash;
輸出看起來是這樣的:
$VAR1 = {
'13' => {
'klm' => 1,
'hij' => 2,
'lkm' => 4,
},
'12' => {
'abc' => 2,
'efg' => 2
}
};
這個偉大的工程,我的問題是:我如何可以訪問此輸出$ VAR1的要素,以做到:爲值13,KLM + hij = 3並得到如下最終輸出:
$VAR1 = {
'13' => {
'somename' => 3,
'lkm' => 4,
},
'12' => {
'abc' => 2,
'efg' => 2
}
};
所以基本上我想要做的就是循環訪問散列的最後一個哈希,並根據一個唯一鍵訪問它的特定元素,最後完成它們的總和。
任何幫助,將不勝感激。 謝謝
你想要使用什麼鍵的總和?所有的鑰匙?指定的密鑰子集? – Bitwise
是這個總和會影響所有的鍵,13個會有klm + hij,12個也會有klm + hij。我給的例子很糟糕,我很抱歉。在更實際的情況下,我有: $ VAR1 = { '13'=> { 'somename'=> 3, 'LKM'=> 4, }, '12'=> { 'somename'=> 9, 'lkm'=> 6 } }; – salamey