in reply to Re^4: Auto-detecting returned or passed variable type
in thread Auto-detecting returned or passed variable type

My thinking is that is functionB does...
return %myhash;
...then it's therefore returning a hash.
Well, see, that's where your thinking is inconsistent with Perl. In Perl, the last expression evaluated in the subroutine (whether preceded by the keyword return or not) acts as if you had a long-distance assignment operation. For example, if that subroutine were to be called in a scalar context, you get:
$secret_return_value = %myhash;
and if called in a list context, you get:
@secret_return_value = %myhash;
You wouldn't call the latter "assigning a hash" would you? No. You are merely evaluating a hash in a list context, which by definition flattens it out into a bunch of key/value pairs. Similarly, the scalar context invocation uses the scalar value for a hash name.

So, again, I can see where your confusion results, but if you can follow my explanation, you'll see that the situations you keep talking about can never occur. And hence, your original question was nonsense.

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.