Unless there is something that you've omitted by the simplification for the OP example code, there is no utility at all in building a named hash from a constant list via an anonymous hash
However, Ingy seems to have found a use for it. See the write_Makefile_PL subroutine in Inline/C.pm. Of course, I have no idea whether his actions in this regard arose from laziness or from necessity ... or even from ignorance. (I know only about ducks :-)
ps. I didn't say it didn't work. Only that there was no point to it! ;)