Excelファイルを解析して次のことを行うPerlスクリプトがあります。列Aの各値、列Bの要素数をカウントします。スクリプトは、次のようになります。
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
}
};
これはうまく機能します。私の質問は次のとおりです。値13の場合、klm + hij = 3を実行し、次のような最終出力を取得するために、この出力$VAR1の要素にアクセスするにはどうすればよいですか。
$VAR1 = {
'13' => {
'somename' => 3,
'lkm' => 4,
},
'12' => {
'abc' => 2,
'efg' => 2
}
};
つまり、基本的に私がやりたいのは、ハッシュの最後のハッシュをループし、一意のキーに基づいてその特定の要素にアクセスし、最後にそれらの合計を実行することです。
どんな助けでもいただければ幸いです。ありがとう