you probably really meant to push %temphash
on to the array ref in $alldata{$key}.
In that case you can reference that array
with @{ $alldata{$key} }.
Then you can just push a reference to %temphash
on top of it:

I'm still running into a problem using push @{ $alldata{$key} }, \%temphash;

For instance, try: print "$alldata{PROTSIM}[2]{PCT}\n";
at the end of the file. You'll get an Use of uninitialized value at test.pl line 24, <DATA> chunk 35. error. What's strange is that: print "$alldata{PROTSIM}[2]{ORG}\n"; is AOK.