Перехват print
сам по себе не годится - у него есть несколько режимов работы, включая запись в файл или сокет.Вместо этого взгляните на функцию select
, которую можно использовать для изменения дескриптора файла по умолчанию, в который print
будет записывать.
Также обратите внимание на концепцию "связанная ручка ввода / вывода, используемая IO :: Capture .