in reply to Cannot dereference hash in subroutine....

I think we'd need to see either the code where you build the hash or the output of the Data::Dumper call in order to know what your data structure _really_ is. It obviously isn't what you think it is (or you'd be getting the right results!) so I think you may be misreading the output from Data::Dumper.

It's just a guess, but I wouldn't be surprised if you have one more or one less level of references than you think you do.

Update: Looking at your code again, it looks like I'm right. You have (for example) $mp3hash{$player} where you should probably have $mp3hash->{$player}.

This is a good example of where use strict is useful as it would have told you that you are trying to access a variable that does exist (the hash %mp4hash).

--
<http://www.dave.org.uk>

"The first rule of Perl club is you do not talk about Perl club."
-- Chip Salzenberg

  • Comment on Re: Cannot dereference hash in subroutine....

Replies are listed 'Best First'.
Re^2: Cannot dereference hash in subroutine....
by bigtiny (Acolyte) on Jul 18, 2005 at 15:17 UTC
    I appreciate the answer, however, if the data is not structured as I think it is, why do these statements work when issued against the hash in main (and they do....) ? bigtiny

      At a guess, because outside of this subroutine you are accessing the hash, whereas in this subroutine you are using a reference to the hash.

      --
      <http://www.dave.org.uk>

      "The first rule of Perl club is you do not talk about Perl club."
      -- Chip Salzenberg

        Uhhh....I got that! But what I mean is, the reference points to the hunk of memory where the data structure resides, correct? So if I can print the data in main, not using a reference, then that tells me that the data and its structure exist, right? So, I think the problem (and maybe you're saying the same thing) is that when I'm using the reference in the subroutine, I'm not using the proper syntax in the foreach loops to reference these data...however, the data (and their structure) are there in memory....Is my understanding of this correct? If so, then my question is, HOW do I reference these data in the subroutine so that I can 'get at' them in the inner loops? bigtiny