in reply to Adding values to a hash of hashes

The problem will be that somwhere in your code you have:

$authors{$_}++ for @authors;

This sets the value held in $authors{'some_author'} = 1 In a hash of hashes this value is not supposed to be 1 - it is required to be a reference to the nested hash. When you do ${$authors{$from}}{$buddy}++ #same as $authors{$from}->{$buddy}++ Perl is trying to dereference the value 1 which fails as you see. Try something like:

# set authors hash to empty hash refs $authors{$_} = {} for @authors # you code goes here

And it will work. BTW in your inner loop you might as well use values rather than keys as you only use the key to get the value anyway.

cheers

tachyon

s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

Replies are listed 'Best First'.
Re: Re: Adding values to a hash of hashes
by suzka99 (Initiate) on Mar 06, 2003 at 22:03 UTC
    Yes, thank you. This was the problem.
    Once I changed the code from: $authors{$author}=1; to: $authors{$author} = {}; Everything started working.
    I was able to finally finish this in the afternoon, and I appreciate the advice.

    --Suzi (a she, not a he)

Re: Re: Adding values to a hash of hashes
by zby (Vicar) on Mar 06, 2003 at 10:09 UTC
    I'd like to know if your guess was right.

      Given that the error message explicitly says that $authors{'douglas adams'} holds the value 1 (not 42 ;-) I will give you great odds.....of course he/she could be using $authors{'tolstoy'} = 1234567890 - 1234567889 or similar.

      cheers

      tachyon

      s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

        Yes, thank you for the advice. I was building the %authors has this way: $authors{$author} =1; Once I changed it to $authors{$author} = {}; Everything started working! Thank you very much because I was able to finally finish this module this afternoon. -Suzi (not a he, people are so presumptuous...)