in reply to In the BEGINing there were no forks?

I've no Windows box, so I can't try. But if the problem is forking inside a BEGIN, why don't you just move all the code one step lower in the compile/run order? That is, a BEGIN becomes "normal" code, and "normal" code becomes an eval:
fork; print "inner\n"; eval qq{print "outer\n"};