in reply to Why did this error slip through?

_ is not a file handle in your case, but an unquoted hash key. Which is perfectly legal even with strict enabled.

Perl 6 solves this problem by having a separte syntax for literal hash keys (%hash<mykey>) and variable acess (%hash{$my_key_in_variable}).

Perl 6 - links to (nearly) everything that is Perl 6.