Excel 파일을 구문 분석하고 다음을 수행하는 Perl 스크립트가 있습니다. A 열의 각 값, B 열의 요소 수를 계산합니다. 스크립트는 다음과 같습니다.perl을 사용하는 해시 값의 해시 합계
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