in reply to hash with a hash
Hashes can only store scalar variables. If you want to have a hash of hashes or hash of lists of hashes, etc. you need to use references. You can do something like this:
my %foo = ( one => 'apple', two => 'orange' );
my %bar = ( foo => \%foo );
when you do \%foo you take a reference to %foo hash, and the reference is a scalar, which can be stored in a hash.
in your case lines:
$tests{1} = %blah1;
$tests{2} = %blah2;
do not do what you want, you need to re-write them like so:
$tests{1} = \%blah1;
$tests{2} = \%blah2;
Here's a little test prog, try it:
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my %foo = ( one => 'apple', two => 'orange' );
my %bar = ( foo => \%foo );
# wrong
$bar{1} = %foo;
print Dumper(\%bar);