in reply to Hash as Hash Value

Your main problem is that the values of hashes can only be scalars, and not entire hashes. Lucky for you, a hash references (hashref) is also a scalar. You want to create your %args hash like this: my %args = (users => \%userHash, domains => \%domainHash, path => $path);

In your subroutine, you have to dereference the hashrefs in order to use them.

sub doSomethingUseful { my $args = shift; my $users = $args->{users}; my $domains = $args->{domains}; my $path = $args->{path}; if (keys %$users > 1) { print("I was hoping you'd say that."); } }