in reply to Testing programs
The Perl modules for automating tests seem to be built for testing other modules, not programs.
First of all I'm not an expert wrt these issues, and I apologize in advance if I'm about to say something utterly stupid, but a possibility that springs to mind would be to write a wrapper sub for your program that would return the output of the latter as, say, returned by qx// and check that.
So you want to run tests dependently from a cmd line switch. I don't think this is a common practice, but I don't see anything patently wrong with it. Though, incidentally, I'd try to avoid string eval and resort to a require, if possibly slightly more verbose...
eval 'use Test::Simple tests => 3;';
ok(double(2) == 4);
ok(double(-3) == -6);
ok(double(0) == 0);