Loop control statements can be used in functions called from loops and it works. It is documented as not supported (the behaviour may change) but it does work.
However signals are a different story. I don't know the status of Perl and safe signals in the development branch. Most assuredly the production version doesn't have them. So adding signal handlers, well you may reduce your problem but won't solve it.
Personally my solutions to the needed input issue are to try tying STDIN to an implementation that will confess away to give you an idea where in your program you are asking for input but shouldn't be. There is a good chance that that won't work though. Alternately I would just pipe /dev/null into your program. I have done that before, mainly to handle system calls to code outside of my control that might try to interact.