Вот первый вариант тоже регулярно используется, но если $io_file это ссылка на тайпглоб, то это вроде не считается indirect object, а часть сигнатуры ключевого слова print. А вот если это объект IO::File, то он самый.
КМК, если у вас много UI-щиков, то node зайдёт. Обычно, тот perl, который остался - это что-то с замахом на высоконагруженность, поэтому логичнее переводить такие бэкенды на Go, Scala, Rust, С++20 и т.п.
Скала очень быстра для серверов. для перловика очень импонирует лаконичность синтаксиса - не надо 100 км писать С++ - почему-бы нет. Задачи у бэкендов бывают разные, а современный С++ хорош почти также, как раст. Го - потому что сложных концепций мало - быстрое начало. Но для сложной обработки лучше вышеперечисленное...
Кому интересно, выложили https://metacpan.org/pod/UniEvent::HTTP Асинхронный/синхронный http клиент и сервер, который до 100к реквестов в секунду на одном ядре может.