Нет необходимости в потоках, и они не очень хороши в Perl .Вы можете использовать цикл обработки событий так же, как это делает JavaScript, но в ядре Perl его просто нет.Двумя популярными и хорошо поддерживаемыми экосистемами цикла событий являются IO :: Async и Mojo :: IOLoop (цикл событий, стоящий за веб-инфраструктурой Mojolicious).Основное отличие состоит в том, что, в отличие от JavaScript, цикл обработки событий не запускается до тех пор, пока что-то его не запустит.
use strict;
use warnings;
use IO::Async::Loop;
print "Event 1 occurred\n";
my $future = IO::Async::Loop->new->delay_future(after => 3)->on_done(sub { print "3 seconds elapsed\n" });
print "Event 2 occurred\n";
$future->await; # run event loop until Future has been resolved
use strict;
use warnings;
use Mojo::IOLoop;
print "Event 1 occurred\n";
Mojo::IOLoop->timer(3 => sub { print "3 seconds elapsed\n" });
print "Event 2 occurred\n";
Mojo::IOLoop->start; # run event loop until no more events to wait for
Ознакомьтесь с Mojolicious поваренной книгой для очень высокого уровня обзора циклов событийи неблокирующий код.