in reply to Hash as Hash Value

I think you want to use hash references inside your hash. Change:
my %args = (users => %userHash, domains => %domainHash, path => $path) +;

to:

my %args = (users => \%userHash, domains => \%domainHash, path => $pat +h);

Data::Dumper is very handy in debugging Perl data structure problems:

print Dumper(\%args);

Update: It looks like you were unlucky in the sense that you happened to have an even number of hashes in your %args hash. If you had had an odd number of hashes, you should have gotten a warning message complaining about odd number of elements in hash assignment (assuming you are using warnings):

my %args = (users => %userHash, domains => %domainHash, third => %hash +, path => $path);