Yes, from your description you seem to be trying to shoehorn a sequential program into an event loop.
AnyEvent (or
POE, or
IO::Async, or whatever) is not a hammer for every nail, it is not always appropriate, but I'm not certain I'd recommend
threads either, perhaps a combination of
fork and some form of
IPC (using one of the fine modules on
CPAN, such as
Parallel::ForkManager) might be better. It would definitely make good use of your pre-emptive, multi-tasking operating system.