Okay, so those two subs are exactly identical, yet one runs just fine and the other crashes. My only guess is that the recursive nature of test_a somewhat has an impact on the context given to the reference. Adding parentheses around $$arg[0] fixes that alright, but I don't care. I just want to understand.

So the call to test_a inside test_a is parsed as indirect method call syntax. Why? Because it's not predeclared. In Perl 5, a name only becomes visible in the statement after the declaration, which is why you can't write

Nope, I don't have typos, and nope, test_b doesn't 'recurse', it just calls test_a. Only test_a is recursive, and only test_a crashes, which is why I assumed that it is the recursivity that causes problems, as you can read in my first post.