It should be ok for perl5, though. The division of responsibilities between hv_delete_* and pp_delete
pretty much require that it work. hv_delete_* will
return null if the key didn't exist, which pp_delete
will replace with the immortal undef value. If the
key did exist, hv_delete_* will return the value (even undef) in a different sv.

It's obviously better practice to check exists in the first place, outside of obfuscation and golf.