Почему бы не использовать:
%define __requires_exclude ^perl(\s|)\(.*\)$
expect
— инструмент. Читатьman expect
https://linux.die.net/man/1/expect
Управляющему приложению необходимо открыть два канала, дважды используя канал (). Затем он разветвляет дочерний процесс.
Оставаясь в исходном коде, родитель закрывает конец записи одного канала и конец чтения другого.
Тем временем дочерний процесс закрывает противоположные концы этих каналов и использует dup2 ()для переназначения их потокам 0 и 1. Таким образом, у родителя остается канал, который записывает в стандартный ввод дочернего элемента, и канал, который читает из stdout ребенка.
Наконец, дочерний exec является требуемой оболочкой с требуемыми аргументами.