I'd separate out the testing from the program. It makes your code cleaner, and you won't pay the costs of compiling your test suite each time you run the program.
# Main program:
#!/usr/bin/perl
use strict;
use warnings;
sub double {
my $n = shift;
return $n * 2;
}
return 1 if caller; # Don't leave this out.
print join ' ', map {double($_)} @ARGV;
print "\n";
__END__
# Test program:
#!/usr/bin/perl
use strict;
use warnings;
use Test::Simple tests => 3;
require 'main.pl'; # Substitute the name of your program.
ok(double( 2) == 4);
ok(double(-3) == -6);
ok(double( 0) == 0);
__END__