Подскажите, как с ком портами работать с перла, если я хочу каллбеки на приход байтиков, причем желательно по пять штук, а не по одному, и каллбеки были синхронными и блокирующимися-per-порт.
Контекст - несколько ком портов, которые мне что-то шлют, Device::SerialPort, я читаю по 5 байтов за раз - $port->read(5) и обрабатываю. Пока ком порт был один - весь код синхронный и блокирующийся - всё удобно. Как портов стало несколько - пришлось запускать по экземпляру скрипта на порт.
В реальности хочется обрабатывать все условно параллельно в рамках одного скрипта, но для каждого порта последовательно и для каждого порта не обрабатывать последующие приходящие байты до того, как обработаю текущие.
Я нашел пример с AE -
https://alpha6.ru/blog/2017/05/28/async-serial-port/ - и вроде бы мне такой вариант подойдет, если сделать буфер, чтобы накапливать по 5 байт и если сделать какую-то очередь, и очередь обрабатывать в каком-то еще отдельном параллельном цикле. Нет ли решения попроще?