It was just a wild guess, because oddities like you experienced are sometimes caused by code being set before the event loop is started, and not being updated properly when called after the MainLoop starts.
It probably would be classified as a bug.
It's really not a good idea to just put subs wherever you want, because nested subs are not seen outside their nest in older versions of Perl (AFAIR) , and I don't know how win32 might handle it. It also could just be that it dosn't look like good style to me. :-)
It still would be useful if you could post
the non-working code. It might be that you may need your filetypes in a global array, or something like that type of glitch.