lhoward has asked for the wisdom of the Perl Monks concerning the following question:

The Perl modules for automating tests seem to be built for testing other modules, not programs. I've been pondering what I should do to test the internals of programs beside external tests (running the program with various inputs and checking the outputs). What I'm looking for is a spot in the middle, where I can run some tests on my program to verify that various subroutines are functioning as expected.

I've done some experiments and the following example is the best idiom that I have been able to come up with so far. Am I on the right track? Am I using a hammer when I should be using a screwdriver? if so, who has the screwdrivers?
#!/usr/bin/perl use warnings; use strict; use Getopt::Std; our ($opt_t); getopts('t'); if($opt_t){ eval 'use Test::Simple tests => 3;'; ok(double(2) == 4); ok(double(-3) == -6); ok(double(0) == 0); exit; } print join ' ',map(double($_),@ARGV),"\n"; sub double{ my $a=shift; $a*2; }