A hash isn't a spreadsheet, so you can't get "access" to a column. But you can add up the arrays for each key and the values for each position in the array. However, I don't really think the data structure you have is a great one.
There are two issues:
- You have the labels as just another value in the hash. This won't work because you need to be sure to print them first, and because you don't want to do any calculations on them. So I'm going to just not make them part of the data structure at all.
- For each key in the hash, you are actually not assigning an array, but a hash with a single key called "data." This doesn't help much, so I won't use it and use an array instead.
Here's some code:
use strict;
use warnings;
my @columntotals;
my %sheet = (Terry => [5, 2],
Doug => [4, 3],
Fred => [1, 5]);
print "Employee Buffalo Cleveland Total\n";
foreach my $key (keys %sheet) {
my @data = @{$sheet{$key}};
my $sum = 0;
$sum += $_ for @data;
push @data, $sum;
print "$key @data\n";
$columntotals[$_] += $data[$_] for 0 .. $#data;
}
print "Total @columntotals\n";
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.