Thanks tip "use Data::Dumper;"
you are correct: my problem was wrong parameters in the call to the subroutine!
the code although mangled in an attempt to find the error is correct!
wish the error messages were a little more enlighting!
Comment on Re^4: Can't use string ("0") as a HASH ref
If, after use warnings; and use strict; at the top of your script, you were to add use diagnostics;, you would get more verbose, and in this case possibly more enlightening, warning nessages.
For this particular problem, the greater verbosity may not have been greatly helpful because the source of the problem (generating a '0' instead of a reference and not checking it) is far removed both lexically and executionally from the point of failure.