bennierounder has asked for the wisdom of the Perl Monks concerning the following question:

Hi there not sure if this can be done, but I need to know a way how to add the elements inside an array inside of a hash


key = '07/2011';
array = [
'145.01',
'247.16',
'772.25',
'144.97',
'133.46',
'509.15',
'498.92',
'567.2',
'175.5',
'1589.63',
'186.67',
'947.46',
'730.29',
'391.07'
key = '06/2011';
array = <br> '321.48',<br> '1698.81',<br> '266.3',<br> '163.33',<br> '749.62',<br> '347.15',<br> '409.49',<br> '735.21',<br> '118.64',<br> '2670.85',<br> '197.56',<br> '1893.33',<br> '430.53',<br> '277.8',<br> '485.94',<br> '1195.5',<br> '2329.68',<br> '541.14',<br> '376.08',<br> '307.12',<br> '1333.21',<br> '227.15',<br> '540.27',<br> '4467.74',<br> '2045.45',<br> '576.93',<br> '385.24',<br> '439.41',<br> '3945.09',<br> '5556.06',<br> '490.56',<br> 792,<br> '385.5',<br> '514.97',<br> '306.68'<br> ;

There could be more keys than this put into the hash but at the minute i am dealing with two months to get the code but cannot work it out at all.

Does anyone know how to get the sum of all the values to be linked up to the keys please.

Thanks in advance if you can help.

Bennierounder

Replies are listed 'Best First'.
Re: How to add array in Hash
by choroba (Cardinal) on Sep 01, 2011 at 10:03 UTC
    Hi Bennierounder, welcome to PerlMonks.
    Please, use code tags <c> and </c> around your code (see Markup in the Monastery).
    As it seems, you want to add an array into a value of a hash, not into its key. This can be achieved by creating Hash of Arrays (see perldsc).
      Thank you for your reply. I had an array inside a hash and the values from the array needed totaling up to one figure and not 20 + values. Just wanted the total of the values instead of them all individually.
      I did as follows.
      The keys in the %interest_hash were dates and the value was an array. I need to link the key to all the elements of the array added together so I just had one figure for the total.
      foreach my $interest_costs (keys %interest_hash) {
      my $total = 0;
      ($total += $_) for @{$interest_hash{$interest_costs}};
      $new_interest_hash{$interest_costs} = $total;
      }
      This code got me the result I needed, however I was told to use map, but have no idea what it is.
      I got the desired outcome anyway, but thankyou very much for your reply. It is much appreciated. Only been doing Perl 4 months as a trainee developer and have no other experience computer languages so I think I'll be using perl monks quite often.
      Thanks again!
        I was told to use map, but have no idea what it is.
        map is a built-in Perl function. It's documentation can be found online and at your command prompt:
        perldoc -f map
        I think I'll be using perl monks quite often
        Great, but please read Writeup Formatting Tips
Re: How to add array in Hash
by bennierounder (Sexton) on Sep 01, 2011 at 10:31 UTC
    It's OK I've worked it out, thanks anyway guys and girls.