Я бы посоветовал вам сделать захват с помощью модуля Capture :: Tiny из CPAN. Это маленький, простой и хорошо проверенный. У него элегантный API, и если у вас совершенно нет никаких зависимостей, его можно легко встроить в вашу программу.
Кроме того: если у вас есть какой-либо контроль над выполняемой программой тестирования, я бы посоветовал вам исследовать Протокол проверки чего-либо . Если вы можете сделать так, чтобы ваша тестовая программа выводила TAP, тогда ваш сценарий использования, включая краткое изложение тестов, становится простым:
perl -MTest::Harness -e 'runtests(@ARGV)' bin/rununittests
Примечание о втором абзаце: возможно, требуется недавний тест :: Проводка. Кроме того, он не совсем делает то, что вам нужно в отношении вызова оболочки, но он должен приблизить вас достаточно близко.