Ahh, la vieille question "comment tester un programme à l'unité". L'astuce la plus simple est d'insérer ceci dans votre programme avant qu'il ne commence à faire des choses :
return 1 unless $0 eq __FILE__;
__FILE__
est le fichier source actuel. $0
est le nom du programme en cours d'exécution. S'ils sont identiques, votre code est exécuté en tant que programme. S'ils sont différents, il est chargé en tant que bibliothèque.
C'est suffisant pour vous permettre de commencer à tester les sous-programmes de votre programme.
require "some/program";
...and test...
L'étape suivante consiste à déplacer tout le code situé en dehors d'une sous-routine dans la rubrique main
vous pouvez le faire :
main() if $0 eq __FILE__;
et vous pouvez maintenant tester main() comme n'importe quel autre sous-programme.
Une fois que cela est fait, vous pouvez commencer à envisager de déplacer les sous-programmes du programme dans leurs propres bibliothèques.