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);