Это зависит от того, хотите ли вы протестировать сам скрипт или протестировать подпрограммы, составляющие скрипт. Если вы хотите протестировать скрипт, то более подходящим будет внешний тест, например, скрипт оболочки. Если вы хотите протестировать функции, составляющие скрипт, то вы можете либо написать эти тесты в виде большего количества функций в скрипте, либо реорганизовать элементы в модуль Perl и протестировать модуль (что, как вы говорите, делать не нужно) .
Если скрипт достаточно маленький, рефакторинг может не понадобиться. Просто добавьте аргумент командной строки '-test' и вызовите тестовую подпрограмму, которая, в свою очередь, проверяет все остальное. При этом мне нравится распечатывать какой-либо индикатор прогресса (например, «.» Для каждого пройденного теста).
Если скрипт более сложный, вы можете рассмотреть возможность рефакторинга битов в один или несколько модулей и тестирования их с помощью Test :: Simple или Test :: More .