in reply to Using the value of a scalar as a hash

well, eval can do this, but comes with the usual caveats that a) you have to trust the strings you give it and b) there's probably a better approach ..
foreach (qw/hasha hashb hashc/) { @keys = keys eval('%' . $_); print "There are " . scalar(@keys) . " keys here for '$_'\n"; }
As for a better approach, first thought is that those hashes should originally be constructed as hashrefs and in a hash...
my %big_data = ( hasha => \%hasha, hashb => \%hashb, hashc => \%hashc, ); foreach (qw/hasha hashb hashc/) { @keys = keys %{$big_data{$_}}; print "There are " . scalar(@keys) . " keys here for '$_'\n"; }