in reply to Is this a perl compiler bug?
You'll also find that putting a + before the "$_" will fix it. I think you will find that in the failing cases the problem is that the parser is taking the { "$_" => undef } to be an anonymous hash rather than a code block. Whether or not this is a bug is really a matter of interpretation - I'd put it into the "Ambiguity in Perl Syntax" bucket myself.
/J\
|
|---|