Where does $fh come from? Is it an instance of FileHandle.pm or from a statement like open $fh, ">file";? What if you try a "normal" handle like OUT as in open OUT, ">file";?
References to filehandles have worked since, oh, eons. (5.001 or so). Autovivifying references to filehandles has worked since 5.6.0. That's two months short of five years. Not something to be really surprised about.