in reply to Can't use string as a HASH ref

Let's decompose what you are doing:
foreach $id (sort keys %quantum) {
Okay, so $id contains a string which is also a key in %quantum. Next:
foreach $date ( sort ... keys %{$quantum{$applid}}) { }
Okay, now we're going to sort a bunch of keys from a contained hashref. I note that you have $applid instead of $id. Is this a typo, or is this some value imported from elsewhere? Ignoring this fact, your sort looks like:
sort { $a->{int(substr($quantum{$id},2,2))} <=> $b->{int +(substr($quantum{$id},2,2))} || $a->{int(substr($quantum{$id},0,2))} <=> $b->{int +(substr($quantum{$id},0,2))} }
The things being fed into your sort (your $a and $b) are the keys (strings), not the values (hash refs). You are trying to dereference the hash keys as hashes and thus your error. You likely meant
foreach my $id (sort keys %quantum) { foreach my $date ( sort { int(substr($quantum{$id}{$a},2,2)) <=> int(substr +($quantum{$id}{$b},2,2)) || int(substr($quantum{$id}{$a},0,2)) <=> int(substr +($quantum{$id}{$b},0,2)) } keys %{$quantum{$id}}) { } }
Or maybe no_slogan guessed better. In either case, see HASHES OF HASHES in perldsc, and maybe perlreftut to boot.

I'm also a little thrown as to why strict is not complaining about you not using my on your loop variables, but that's a different question.


#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

Replies are listed 'Best First'.
Re^2: Can't use string as a HASH ref
by tentacoolstuff (Initiate) on May 16, 2014 at 17:24 UTC

    Sorry, applid is a typo, it's suppose to be id which i just changed in my post for better readability. If I sort according to your suggestion, would I not be sorting the keys (dates) by values contained within their arrays? I want to sort by the name of the key (date) itself, for example the $date value "05162014" should be sorted to come after "05152014". Thanks for your comments.

      Which is why you are supposed to post input data, so that we don't have to guess. See How do I post a question effectively?.


      #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.